Subject: Re: Powerpc: Kernel warn_on when enabling IOMMU_API

From: Alexey Kardashevskiy <[email-masked]>
Date: Tue, 13 Aug 2013 22:54:54 +1000

On 08/13/2013 08:44 PM, Bhushan Bharat-R65777 wrote:
> 
> 
>> -----Original Message----- From: Alexey Kardashevskiy
>> [mailto:[email-masked]] Sent: Tuesday, August 13, 2013 5:41 AM To:
>> Bhushan Bharat-R65777 Cc: [email-masked];
>> [email-masked] Subject: Re: Powerpc: Kernel warn_on
>> when enabling IOMMU_API
>> 
>> On 08/13/2013 02:14 AM, Bhushan Bharat-R65777 wrote:
>>> 
>>> 
>>>> -----Original Message----- From: Alexey Kardashevskiy
>>>> [mailto:[email-masked]] Sent: Monday, August 12, 2013 7:44 PM To:
>>>> Bhushan Bharat-R65777 Cc: [email-masked];
>>>> [email-masked] Subject: Re: Powerpc: Kernel warn_on
>>>> when enabling IOMMU_API
>>>> 
>>>> On 08/12/2013 08:20 PM, Bhushan Bharat-R65777 wrote:
>>>>> And this simple fix work for me diff --git
>>>>> a/arch/powerpc/kernel/iommu.c b/arch/powerpc/kernel/iommu.c
>>>>> index b20ff17..8869b0d 100644 --- a/arch/powerpc/kernel/iommu.c 
>>>>> +++ b/arch/powerpc/kernel/iommu.c @@ -48,6 +48,8 @@ #include
>>>>> <asm/vio.h> #include <asm/tce.h>
>>>>> 
>>>>> +#define DEBUG + #define DBG(...)
>>>>> 
>>>>> static int novmerge; @@ -871,7 +873,7 @@ void
>>>>> iommu_free_coherent(struct iommu_table *tbl, size_t
>>>> size,
>>>>> } }
>>>>> 
>>>>> -#ifdef CONFIG_IOMMU_API +#ifdef SPAPR_TCE_IOMMU /* * SPAPR TCE
>>>>> API */ ----------------------
>>>> 
>>>> 
>>>> And with this fix, what does "ls -laR /sys/kernel/iommu_groups/"
>>>> print?
>>> 
>>> It shows the list of group id and respective devices:
>>> 
>> 
>> Is it vanilla 3.11-rc1 kernel? Wow. What does "lspci" show there?
> 
> It is 3.11-rc1 + (FSL_IOMMU + VFIO-PCI : local changes).
> 
> root@p5040ds:~# lspci
00:00.0 Class 0604: 1957:0450
01:00.0 Class 0200: 8086:10fb
00:00.0 Class 0604: 1957:0450
01:00.0 Class 0200: 8086:10d3

Is it one PCI domain or two PCI domains? Hm.

> We uses the bus_set_iommu(), generic iommu api, which creates a
> iommu_group for a device (drivers/iommu/iommu.c) using. Also this have
> notifier to support hotplug-able device. So when this initcall (in
> arch/powerpc/kernel/iommu.c) is called, iommu group is already setup for
> the device/s.

> I think we do not need this piece of code for powerpc. So what is the
> best way to stub this out for FSL PowerPC/IOMMU?

So you implemented iommu_ops? Can you share your code somewhere, just to
have a look?

> Will the above #ifdef SPAPR_TCE_IOMMU work? Other way can be selecting
> iommu.c and dma-iommu.c in Makefile if SPAPR_TCE_IOMMU defined and not
> if CONFIG_64BIT.

If SPAPR_TCE_IOMMU is enabled, the code would compile and the subsys_init
would be called anyway, so normal production kernel will fail anyway.

-- 
Alexey