From: Thierry Reding <thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: Joerg Roedel <joro-zLv9SwRftAIdnm+yROfE0A@public.gmane.org>
Cc: linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
Mikko Perttunen
<mperttunen-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
Subject: Re: [PATCH 2/2] iommu: Add dummy implementations for !IOMMU_IOVA
Date: Mon, 20 Mar 2017 20:14:31 +0100 [thread overview]
Message-ID: <20170320191431.GF14787@ulmo.ba.sec> (raw)
In-Reply-To: <20170320191128.26474-2-thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
[-- Attachment #1.1: Type: text/plain, Size: 4080 bytes --]
On Mon, Mar 20, 2017 at 08:11:28PM +0100, Thierry Reding wrote:
> From: Thierry Reding <treding-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
>
> Currently, building code which uses the API guarded by the IOMMU_IOVA
> will fail to link if IOMMU_IOVA is not enabled. Often this code will be
> using the API provided by the IOMMU_API Kconfig symbol, but support for
> this can be optional, with code falling back to contiguous memory. This
> commit implements dummy functions for the IOVA API so that it can be
> compiled out.
>
> With both IOMMU_API and IOMMU_IOVA optional, code can now be built with
> or without support for IOMMU without having to resort to #ifdefs in the
> user code.
>
> Signed-off-by: Thierry Reding <treding-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
> ---
> include/linux/iova.h | 91 ++++++++++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 91 insertions(+)
Hi Joerg,
I've got a series of patches that I'd like to merge for v4.12 that have
a build-time dependency on this patch. It would therefore be great to
get your Acked-by on this so that I can merge it through the DRM tree
with the rest of the patches. I can provide a stable branch with only
this patch for you to pull into the IOMMU tree.
Thierry
> diff --git a/include/linux/iova.h b/include/linux/iova.h
> index f27bb2c62fca..548982ad5f2f 100644
> --- a/include/linux/iova.h
> +++ b/include/linux/iova.h
> @@ -82,6 +82,7 @@ static inline unsigned long iova_pfn(struct iova_domain *iovad, dma_addr_t iova)
> return iova >> iova_shift(iovad);
> }
>
> +#ifdef CONFIG_IOMMU_IOVA
> int iova_cache_get(void);
> void iova_cache_put(void);
>
> @@ -106,5 +107,95 @@ void put_iova_domain(struct iova_domain *iovad);
> struct iova *split_and_remove_iova(struct iova_domain *iovad,
> struct iova *iova, unsigned long pfn_lo, unsigned long pfn_hi);
> void free_cpu_cached_iovas(unsigned int cpu, struct iova_domain *iovad);
> +#else
> +static inline int iova_cache_get(void)
> +{
> + return -ENOTSUPP;
> +}
> +
> +static inline void iova_cache_put(void)
> +{
> +}
> +
> +static inline struct iova *alloc_iova_mem(void)
> +{
> + return NULL;
> +}
> +
> +static inline void free_iova_mem(struct iova *iova)
> +{
> +}
> +
> +static inline void free_iova(struct iova_domain *iovad, unsigned long pfn)
> +{
> +}
> +
> +static inline void __free_iova(struct iova_domain *iovad, struct iova *iova)
> +{
> +}
> +
> +static inline struct iova *alloc_iova(struct iova_domain *iovad,
> + unsigned long size,
> + unsigned long limit_pfn,
> + bool size_aligned)
> +{
> + return NULL;
> +}
> +
> +static inline void free_iova_fast(struct iova_domain *iovad,
> + unsigned long pfn,
> + unsigned long size)
> +{
> +}
> +
> +static inline unsigned long alloc_iova_fast(struct iova_domain *iovad,
> + unsigned long size,
> + unsigned long limit_pfn)
> +{
> + return 0;
> +}
> +
> +static inline struct iova *reserve_iova(struct iova_domain *iovad,
> + unsigned long pfn_lo,
> + unsigned long pfn_hi)
> +{
> + return NULL;
> +}
> +
> +static inline void copy_reserved_iova(struct iova_domain *from,
> + struct iova_domain *to)
> +{
> +}
> +
> +static inline void init_iova_domain(struct iova_domain *iovad,
> + unsigned long granule,
> + unsigned long start_pfn,
> + unsigned long pfn_32bit)
> +{
> +}
> +
> +static inline struct iova *find_iova(struct iova_domain *iovad,
> + unsigned long pfn)
> +{
> + return NULL;
> +}
> +
> +static inline void put_iova_domain(struct iova_domain *iovad)
> +{
> +}
> +
> +static inline struct iova *split_and_remove_iova(struct iova_domain *iovad,
> + struct iova *iova,
> + unsigned long pfn_lo,
> + unsigned long pfn_hi)
> +{
> + return NULL;
> +}
> +
> +static inline void free_cpu_cached_iovas(unsigned int cpu,
> + struct iova_domain *iovad)
> +{
> +}
> +#endif
>
> #endif
> --
> 2.12.0
>
[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
[-- Attachment #2: Type: text/plain, Size: 0 bytes --]
WARNING: multiple messages have this Message-ID (diff)
From: Thierry Reding <thierry.reding@gmail.com>
To: Joerg Roedel <joro@8bytes.org>
Cc: Mikko Perttunen <mperttunen@nvidia.com>,
iommu@lists.linux-foundation.org, linux-tegra@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/2] iommu: Add dummy implementations for !IOMMU_IOVA
Date: Mon, 20 Mar 2017 20:14:31 +0100 [thread overview]
Message-ID: <20170320191431.GF14787@ulmo.ba.sec> (raw)
In-Reply-To: <20170320191128.26474-2-thierry.reding@gmail.com>
[-- Attachment #1: Type: text/plain, Size: 4022 bytes --]
On Mon, Mar 20, 2017 at 08:11:28PM +0100, Thierry Reding wrote:
> From: Thierry Reding <treding@nvidia.com>
>
> Currently, building code which uses the API guarded by the IOMMU_IOVA
> will fail to link if IOMMU_IOVA is not enabled. Often this code will be
> using the API provided by the IOMMU_API Kconfig symbol, but support for
> this can be optional, with code falling back to contiguous memory. This
> commit implements dummy functions for the IOVA API so that it can be
> compiled out.
>
> With both IOMMU_API and IOMMU_IOVA optional, code can now be built with
> or without support for IOMMU without having to resort to #ifdefs in the
> user code.
>
> Signed-off-by: Thierry Reding <treding@nvidia.com>
> ---
> include/linux/iova.h | 91 ++++++++++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 91 insertions(+)
Hi Joerg,
I've got a series of patches that I'd like to merge for v4.12 that have
a build-time dependency on this patch. It would therefore be great to
get your Acked-by on this so that I can merge it through the DRM tree
with the rest of the patches. I can provide a stable branch with only
this patch for you to pull into the IOMMU tree.
Thierry
> diff --git a/include/linux/iova.h b/include/linux/iova.h
> index f27bb2c62fca..548982ad5f2f 100644
> --- a/include/linux/iova.h
> +++ b/include/linux/iova.h
> @@ -82,6 +82,7 @@ static inline unsigned long iova_pfn(struct iova_domain *iovad, dma_addr_t iova)
> return iova >> iova_shift(iovad);
> }
>
> +#ifdef CONFIG_IOMMU_IOVA
> int iova_cache_get(void);
> void iova_cache_put(void);
>
> @@ -106,5 +107,95 @@ void put_iova_domain(struct iova_domain *iovad);
> struct iova *split_and_remove_iova(struct iova_domain *iovad,
> struct iova *iova, unsigned long pfn_lo, unsigned long pfn_hi);
> void free_cpu_cached_iovas(unsigned int cpu, struct iova_domain *iovad);
> +#else
> +static inline int iova_cache_get(void)
> +{
> + return -ENOTSUPP;
> +}
> +
> +static inline void iova_cache_put(void)
> +{
> +}
> +
> +static inline struct iova *alloc_iova_mem(void)
> +{
> + return NULL;
> +}
> +
> +static inline void free_iova_mem(struct iova *iova)
> +{
> +}
> +
> +static inline void free_iova(struct iova_domain *iovad, unsigned long pfn)
> +{
> +}
> +
> +static inline void __free_iova(struct iova_domain *iovad, struct iova *iova)
> +{
> +}
> +
> +static inline struct iova *alloc_iova(struct iova_domain *iovad,
> + unsigned long size,
> + unsigned long limit_pfn,
> + bool size_aligned)
> +{
> + return NULL;
> +}
> +
> +static inline void free_iova_fast(struct iova_domain *iovad,
> + unsigned long pfn,
> + unsigned long size)
> +{
> +}
> +
> +static inline unsigned long alloc_iova_fast(struct iova_domain *iovad,
> + unsigned long size,
> + unsigned long limit_pfn)
> +{
> + return 0;
> +}
> +
> +static inline struct iova *reserve_iova(struct iova_domain *iovad,
> + unsigned long pfn_lo,
> + unsigned long pfn_hi)
> +{
> + return NULL;
> +}
> +
> +static inline void copy_reserved_iova(struct iova_domain *from,
> + struct iova_domain *to)
> +{
> +}
> +
> +static inline void init_iova_domain(struct iova_domain *iovad,
> + unsigned long granule,
> + unsigned long start_pfn,
> + unsigned long pfn_32bit)
> +{
> +}
> +
> +static inline struct iova *find_iova(struct iova_domain *iovad,
> + unsigned long pfn)
> +{
> + return NULL;
> +}
> +
> +static inline void put_iova_domain(struct iova_domain *iovad)
> +{
> +}
> +
> +static inline struct iova *split_and_remove_iova(struct iova_domain *iovad,
> + struct iova *iova,
> + unsigned long pfn_lo,
> + unsigned long pfn_hi)
> +{
> + return NULL;
> +}
> +
> +static inline void free_cpu_cached_iovas(unsigned int cpu,
> + struct iova_domain *iovad)
> +{
> +}
> +#endif
>
> #endif
> --
> 2.12.0
>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
next prev parent reply other threads:[~2017-03-20 19:14 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-03-20 19:11 [PATCH 1/2] MAINTAINERS: Add related headers to IOMMU section Thierry Reding
2017-03-20 19:11 ` Thierry Reding
[not found] ` <20170320191128.26474-1-thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2017-03-20 19:11 ` [PATCH 2/2] iommu: Add dummy implementations for !IOMMU_IOVA Thierry Reding
2017-03-20 19:11 ` Thierry Reding
[not found] ` <20170320191128.26474-2-thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2017-03-20 19:14 ` Thierry Reding [this message]
2017-03-20 19:14 ` Thierry Reding
[not found] ` <20170320191431.GF14787-EkSeR96xj6Pcmrwk2tT4+A@public.gmane.org>
2017-03-22 14:55 ` Joerg Roedel
2017-03-22 14:55 ` Joerg Roedel
[not found] ` <20170322145530.GC7315-zLv9SwRftAIdnm+yROfE0A@public.gmane.org>
2017-03-22 18:07 ` Thierry Reding
2017-03-22 18:07 ` Thierry Reding
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=20170320191431.GF14787@ulmo.ba.sec \
--to=thierry.reding-re5jqeeqqe8avxtiumwx3w@public.gmane.org \
--cc=iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \
--cc=joro-zLv9SwRftAIdnm+yROfE0A@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=mperttunen-DDmLM1+adcrQT0dZR+AlfA@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: link
Be 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.