From: sakari.ailus@maxwell.research.nokia.com (Sakari Ailus)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v3 2/2] OMAP: IOMMU: add support to callback during fault handling
Date: Wed, 23 Feb 2011 22:56:48 +0200 [thread overview]
Message-ID: <4D657490.20504@maxwell.research.nokia.com> (raw)
In-Reply-To: <AANLkTi=+rzHDB_hGzGtZKNZB02z4v65GAD-87zVpOdni@mail.gmail.com>
David Cohen wrote:
> On Wed, Feb 23, 2011 at 3:39 PM, Guzman Lugo, Fernando
> <fernando.lugo@ti.com> wrote:
>> On Wed, Feb 23, 2011 at 3:45 AM, David Cohen <dacohen@gmail.com> wrote:
>>> On Wed, Feb 23, 2011 at 3:17 AM, Guzman Lugo, Fernando
>>> <fernando.lugo@ti.com> wrote:
>>>> On Wed, Feb 16, 2011 at 1:35 PM, David Cohen <dacohen@gmail.com> wrote:
>>>>> Add support to register an isr for IOMMU fault situations and adapt it
>>>>> to allow such (*isr)() to be used as fault callback. Drivers using IOMMU
>>>>> module might want to be informed when errors happen in order to debug it
>>>>> or react.
>>>>>
>>>>> Signed-off-by: David Cohen <dacohen@gmail.com>
>>>>> ---
>>>>> arch/arm/mach-omap2/iommu2.c | 17 +++++++++-
>>>>> arch/arm/plat-omap/include/plat/iommu.h | 14 ++++++++-
>>>>> arch/arm/plat-omap/iommu.c | 52 ++++++++++++++++++++++---------
>>>>> 3 files changed, 65 insertions(+), 18 deletions(-)
>>>>>
>>>> ....
>>>>
>>>>> @@ -917,6 +912,33 @@ void iommu_put(struct iommu *obj)
>>>>> }
>>>>> EXPORT_SYMBOL_GPL(iommu_put);
>>>>>
>>>>> +int iommu_set_isr(const char *name,
>>>>> + int (*isr)(struct iommu *obj, u32 da, u32 iommu_errs,
>>>>> + void *priv),
>>>>> + void *isr_priv)
>>>>> +{
>>>>> + struct device *dev;
>>>>> + struct iommu *obj;
>>>>> +
>>>>
>>>> if the driver support multiple user for the same iommu why can only
>>>> one callback be registered? should it support register multiple
>>>> callback function (one per user)?
>>>
>>> Can you define a scenario for that?
>>> On OMAP3 ISP the multiple users are the multiple ISP submodule, but I
>>> don't think it's necessary all submodule to have a specific callback.
>>> ISP core layer should handle.
>>
>> Hi,
>>
>> In OMAP4 the cortex M3 is a double core processor and as each core is
>> running they own version of the RTOS we threat them independently. So
>> our driver which controls the remote processor sees two processor but
>> both use the same iommu hw. When a iommu fault happens, at this
>> moment, it is consider as a faltal error and it is no managed to
>> recover and continue, instead a restart of the processor is needed, if
>> the fault happens in core0 we need to reset core1 too and vice versa.
>> if the iommu would support several user callbacks, we can register the
>> callback which resets core0 and also the callback which resets core1
>> and treat them as totally independent processors. Also we have an
>> error event notifier driver, which is only in charge of notifying
>> error events to userspace, so we would have multiple callbacks we
>> could do this
>
> I understood your point. In this case, I may not disagree about having
> more than one callback per obj, although it doesn't seem a nice
> scenario.
> We can have a list of callbacks and call the entire list when a fault
> happens. But it's necessary to pay attention it will happen in atomic
> context and users should not abuse and register many callbacks. The
> callback should *NOT* print useless messages and must verify the error
> code to not execute useless steps.
> In this context, callback and ISR cannot share a same pointer anymore.
I think this is outside of the scope of the patch but...
To efficiently debug iommu faults (with a driver using iommu page
walking), besides the actual fault address the list of existing mappings
and the information which driver created them and for which purpose is
useful.
The list of mappings is already available in the iommu structure. It'd
be nice if there was a function a driver could call to print them.
I can only think of ugly ways to implement the other.
Just my 5 cents (as we have no 2 cent coins here).
Regards,
--
Sakari Ailus
sakari.ailus at maxwell.research.nokia.com
next prev parent reply other threads:[~2011-02-23 20:56 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-02-16 19:35 [PATCH v3 0/2] OMAP: IOMMU fault callback support David Cohen
2011-02-16 19:35 ` [PATCH v3 1/2] OMAP2+: IOMMU: don't print fault warning on specific layer David Cohen
2011-02-16 19:35 ` [PATCH v3 2/2] OMAP: IOMMU: add support to callback during fault handling David Cohen
2011-02-21 8:18 ` Hiroshi DOYU
2011-02-21 8:22 ` Felipe Balbi
2011-02-21 8:57 ` David Cohen
2011-02-21 9:20 ` Felipe Balbi
2011-02-21 9:07 ` David Cohen
2011-02-21 9:51 ` Hiroshi DOYU
2011-02-21 18:43 ` Ramirez Luna, Omar
2011-02-21 21:12 ` David Cohen
2011-02-21 23:25 ` Ramirez Luna, Omar
2011-02-21 23:48 ` David Cohen
2011-02-23 1:17 ` Guzman Lugo, Fernando
2011-02-23 9:45 ` David Cohen
2011-02-23 13:39 ` Guzman Lugo, Fernando
2011-02-23 19:54 ` David Cohen
2011-02-23 20:56 ` Sakari Ailus [this message]
2011-02-23 21:48 ` Guzman Lugo, Fernando
2011-02-24 6:39 ` David Cohen
2011-02-23 21:12 ` Guzman Lugo, Fernando
2011-02-23 20:09 ` Sakari Ailus
2011-02-23 20:21 ` David Cohen
2011-02-23 21:30 ` Guzman Lugo, Fernando
2011-02-24 8:35 ` Felipe Balbi
2011-02-24 11:26 ` David Cohen
2011-02-24 11:29 ` Felipe Balbi
2011-02-24 17:58 ` Guzman Lugo, Fernando
2011-02-24 20:31 ` Tony Lindgren
2011-02-24 22:21 ` Tony Lindgren
2011-02-21 9:52 ` [PATCH v3 0/2] OMAP: IOMMU fault callback support Hiroshi DOYU
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=4D657490.20504@maxwell.research.nokia.com \
--to=sakari.ailus@maxwell.research.nokia.com \
--cc=linux-arm-kernel@lists.infradead.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).