From: Alexey Kardashevskiy <[email protected]>
The IOMMU API implements groups creating/deletion, device binding
and IOMMU map/unmap operations.
The PowerPC implementation uses most of the API except map/unmap
operations, which are implemented on POWER using hypercalls.
However, in order to link a kernel with the CONFIG_IOMMU_API enabled,
the empty kvm_iommu_map_pages/kvm_iommu_unmap_pages have to be
defined, so this defines them.
Signed-off-by: Alexey Kardashevskiy <[email protected]>
Cc: David Gibson <[email protected]>
Signed-off-by: Paul Mackerras <[email protected]>
---
arch/powerpc/include/asm/kvm_host.h | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/arch/powerpc/include/asm/kvm_host.h b/arch/powerpc/include/asm/kvm_host.h
index b6a047e..c025d91 100644
--- a/arch/powerpc/include/asm/kvm_host.h
+++ b/arch/powerpc/include/asm/kvm_host.h
@@ -603,4 +603,18 @@ struct kvm_vcpu_arch {
#define __KVM_HAVE_ARCH_WQP
+#ifdef CONFIG_IOMMU_API
+/* POWERPC does not use IOMMU API for mapping/unmapping */
+static inline int kvm_iommu_map_pages(struct kvm *kvm,
+ struct kvm_memory_slot *slot)
+{
+ return 0;
+}
+
+static inline void kvm_iommu_unmap_pages(struct kvm *kvm,
+ struct kvm_memory_slot *slot)
+{
+}
+#endif /* CONFIG_IOMMU_API */
+
#endif /* __POWERPC_KVM_HOST_H__ */
--
1.7.10.4
On Mon, 2013-05-06 at 17:21 +1000, [email protected] wrote:
> From: Alexey Kardashevskiy <[email protected]>
>
> The IOMMU API implements groups creating/deletion, device binding
> and IOMMU map/unmap operations.
>
> The PowerPC implementation uses most of the API except map/unmap
> operations, which are implemented on POWER using hypercalls.
>
> However, in order to link a kernel with the CONFIG_IOMMU_API enabled,
> the empty kvm_iommu_map_pages/kvm_iommu_unmap_pages have to be
> defined, so this defines them.
>
> Signed-off-by: Alexey Kardashevskiy <[email protected]>
> Cc: David Gibson <[email protected]>
> Signed-off-by: Paul Mackerras <[email protected]>
> ---
> arch/powerpc/include/asm/kvm_host.h | 14 ++++++++++++++
> 1 file changed, 14 insertions(+)
>
> diff --git a/arch/powerpc/include/asm/kvm_host.h b/arch/powerpc/include/asm/kvm_host.h
> index b6a047e..c025d91 100644
> --- a/arch/powerpc/include/asm/kvm_host.h
> +++ b/arch/powerpc/include/asm/kvm_host.h
> @@ -603,4 +603,18 @@ struct kvm_vcpu_arch {
>
> #define __KVM_HAVE_ARCH_WQP
>
> +#ifdef CONFIG_IOMMU_API
> +/* POWERPC does not use IOMMU API for mapping/unmapping */
> +static inline int kvm_iommu_map_pages(struct kvm *kvm,
> + struct kvm_memory_slot *slot)
> +{
> + return 0;
> +}
> +
> +static inline void kvm_iommu_unmap_pages(struct kvm *kvm,
> + struct kvm_memory_slot *slot)
> +{
> +}
> +#endif /* CONFIG_IOMMU_API */
> +
> #endif /* __POWERPC_KVM_HOST_H__ */
This is no longer needed, Gleb applied my patch for 3.10 that make all
of KVM device assignment dependent on a build config option and the top
level kvm_host.h now includes this when that is not set. Thanks,
Alex
On 05/07/2013 07:07 AM, Alex Williamson wrote:
> On Mon, 2013-05-06 at 17:21 +1000, [email protected] wrote:
>> From: Alexey Kardashevskiy <[email protected]>
>>
>> The IOMMU API implements groups creating/deletion, device binding
>> and IOMMU map/unmap operations.
>>
>> The PowerPC implementation uses most of the API except map/unmap
>> operations, which are implemented on POWER using hypercalls.
>>
>> However, in order to link a kernel with the CONFIG_IOMMU_API enabled,
>> the empty kvm_iommu_map_pages/kvm_iommu_unmap_pages have to be
>> defined, so this defines them.
>>
>> Signed-off-by: Alexey Kardashevskiy <[email protected]>
>> Cc: David Gibson <[email protected]>
>> Signed-off-by: Paul Mackerras <[email protected]>
>> ---
>> arch/powerpc/include/asm/kvm_host.h | 14 ++++++++++++++
>> 1 file changed, 14 insertions(+)
>>
>> diff --git a/arch/powerpc/include/asm/kvm_host.h b/arch/powerpc/include/asm/kvm_host.h
>> index b6a047e..c025d91 100644
>> --- a/arch/powerpc/include/asm/kvm_host.h
>> +++ b/arch/powerpc/include/asm/kvm_host.h
>> @@ -603,4 +603,18 @@ struct kvm_vcpu_arch {
>>
>> #define __KVM_HAVE_ARCH_WQP
>>
>> +#ifdef CONFIG_IOMMU_API
>> +/* POWERPC does not use IOMMU API for mapping/unmapping */
>> +static inline int kvm_iommu_map_pages(struct kvm *kvm,
>> + struct kvm_memory_slot *slot)
>> +{
>> + return 0;
>> +}
>> +
>> +static inline void kvm_iommu_unmap_pages(struct kvm *kvm,
>> + struct kvm_memory_slot *slot)
>> +{
>> +}
>> +#endif /* CONFIG_IOMMU_API */
>> +
>> #endif /* __POWERPC_KVM_HOST_H__ */
>
> This is no longer needed, Gleb applied my patch for 3.10 that make all
> of KVM device assignment dependent on a build config option and the top
> level kvm_host.h now includes this when that is not set. Thanks,
Cannot find it, could you point me please where it is on github or
git.kernel.org? Thanks.
--
Alexey
On Tue, 2013-05-07 at 10:49 +1000, Alexey Kardashevskiy wrote:
> On 05/07/2013 07:07 AM, Alex Williamson wrote:
> > On Mon, 2013-05-06 at 17:21 +1000, [email protected] wrote:
> >> From: Alexey Kardashevskiy <[email protected]>
> >>
> >> The IOMMU API implements groups creating/deletion, device binding
> >> and IOMMU map/unmap operations.
> >>
> >> The PowerPC implementation uses most of the API except map/unmap
> >> operations, which are implemented on POWER using hypercalls.
> >>
> >> However, in order to link a kernel with the CONFIG_IOMMU_API enabled,
> >> the empty kvm_iommu_map_pages/kvm_iommu_unmap_pages have to be
> >> defined, so this defines them.
> >>
> >> Signed-off-by: Alexey Kardashevskiy <[email protected]>
> >> Cc: David Gibson <[email protected]>
> >> Signed-off-by: Paul Mackerras <[email protected]>
> >> ---
> >> arch/powerpc/include/asm/kvm_host.h | 14 ++++++++++++++
> >> 1 file changed, 14 insertions(+)
> >>
> >> diff --git a/arch/powerpc/include/asm/kvm_host.h b/arch/powerpc/include/asm/kvm_host.h
> >> index b6a047e..c025d91 100644
> >> --- a/arch/powerpc/include/asm/kvm_host.h
> >> +++ b/arch/powerpc/include/asm/kvm_host.h
> >> @@ -603,4 +603,18 @@ struct kvm_vcpu_arch {
> >>
> >> #define __KVM_HAVE_ARCH_WQP
> >>
> >> +#ifdef CONFIG_IOMMU_API
> >> +/* POWERPC does not use IOMMU API for mapping/unmapping */
> >> +static inline int kvm_iommu_map_pages(struct kvm *kvm,
> >> + struct kvm_memory_slot *slot)
> >> +{
> >> + return 0;
> >> +}
> >> +
> >> +static inline void kvm_iommu_unmap_pages(struct kvm *kvm,
> >> + struct kvm_memory_slot *slot)
> >> +{
> >> +}
> >> +#endif /* CONFIG_IOMMU_API */
> >> +
> >> #endif /* __POWERPC_KVM_HOST_H__ */
> >
> > This is no longer needed, Gleb applied my patch for 3.10 that make all
> > of KVM device assignment dependent on a build config option and the top
> > level kvm_host.h now includes this when that is not set. Thanks,
>
> Cannot find it, could you point me please where it is on github or
> git.kernel.org? Thanks.
http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=2a5bab1004729f3302c776e53ee7c895b98bb1ce
On 05/07/2013 11:42 AM, Alex Williamson wrote:
> On Tue, 2013-05-07 at 10:49 +1000, Alexey Kardashevskiy wrote:
>> On 05/07/2013 07:07 AM, Alex Williamson wrote:
>>> On Mon, 2013-05-06 at 17:21 +1000, [email protected] wrote:
>>>> From: Alexey Kardashevskiy <[email protected]>
>>>>
>>>> The IOMMU API implements groups creating/deletion, device binding
>>>> and IOMMU map/unmap operations.
>>>>
>>>> The PowerPC implementation uses most of the API except map/unmap
>>>> operations, which are implemented on POWER using hypercalls.
>>>>
>>>> However, in order to link a kernel with the CONFIG_IOMMU_API enabled,
>>>> the empty kvm_iommu_map_pages/kvm_iommu_unmap_pages have to be
>>>> defined, so this defines them.
>>>>
>>>> Signed-off-by: Alexey Kardashevskiy <[email protected]>
>>>> Cc: David Gibson <[email protected]>
>>>> Signed-off-by: Paul Mackerras <[email protected]>
>>>> ---
>>>> arch/powerpc/include/asm/kvm_host.h | 14 ++++++++++++++
>>>> 1 file changed, 14 insertions(+)
>>>>
>>>> diff --git a/arch/powerpc/include/asm/kvm_host.h b/arch/powerpc/include/asm/kvm_host.h
>>>> index b6a047e..c025d91 100644
>>>> --- a/arch/powerpc/include/asm/kvm_host.h
>>>> +++ b/arch/powerpc/include/asm/kvm_host.h
>>>> @@ -603,4 +603,18 @@ struct kvm_vcpu_arch {
>>>>
>>>> #define __KVM_HAVE_ARCH_WQP
>>>>
>>>> +#ifdef CONFIG_IOMMU_API
>>>> +/* POWERPC does not use IOMMU API for mapping/unmapping */
>>>> +static inline int kvm_iommu_map_pages(struct kvm *kvm,
>>>> + struct kvm_memory_slot *slot)
>>>> +{
>>>> + return 0;
>>>> +}
>>>> +
>>>> +static inline void kvm_iommu_unmap_pages(struct kvm *kvm,
>>>> + struct kvm_memory_slot *slot)
>>>> +{
>>>> +}
>>>> +#endif /* CONFIG_IOMMU_API */
>>>> +
>>>> #endif /* __POWERPC_KVM_HOST_H__ */
>>>
>>> This is no longer needed, Gleb applied my patch for 3.10 that make all
>>> of KVM device assignment dependent on a build config option and the top
>>> level kvm_host.h now includes this when that is not set. Thanks,
>>
>> Cannot find it, could you point me please where it is on github or
>> git.kernel.org? Thanks.
>
> http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=2a5bab1004729f3302c776e53ee7c895b98bb1ce
Yes, I confirm, this is patch is not need any more. Thanks!
--
Alexey