All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Sricharan" <sricharan@codeaurora.org>
To: 'Robin Murphy' <robin.murphy@arm.com>,
	'Tomasz Nowicki' <tn@semihalf.com>,
	will.deacon@arm.com, joro@8bytes.org, lorenzo.pieralisi@arm.com,
	iommu@lists.linux-foundation.org,
	linux-arm-kernel@lists.infradead.org,
	linux-arm-msm@vger.kernel.org, m.szyprowski@samsung.com,
	bhelgaas@google.com, linux-pci@vger.kernel.org,
	linux-acpi@vger.kernel.org
Subject: RE: [PATCH V7 01/11] iommu/of: Refactor of_iommu_configure() for error handling
Date: Mon, 30 Jan 2017 12:30:11 +0530	[thread overview]
Message-ID: <003601d27ac6$84866840$8d9338c0$@codeaurora.org> (raw)
In-Reply-To: <d27f04da-7d34-9640-1639-790d0732ed93@arm.com>

Hi Robin,

>> [..]
>>
>>>>> +const struct iommu_ops *of_iommu_configure(struct device *dev,
>>>>> +                       struct device_node *master_np)
>>>>> +{
>>>>> +    const struct iommu_ops *ops;
>>>>> +
>>>>> +    if (!master_np)
>>>>> +        return NULL;
>>>>> +
>>>>> +    if (dev_is_pci(dev))
>>>>> +        ops = of_pci_iommu_init(to_pci_dev(dev), master_np);
>>>>
>>>> I gave the whole patch set a try on ThunderX. really_probe() is failing
>>>> on dma_configure()->of_pci_iommu_init() for each PCI device.
>>>
>>> When you say "failing", do you mean cleanly, or with a crash? I've
>>> managed to hit __of_match_node() dereferencing NULL from
>>> of_iommu_xlate() in a horribly complicated chain of events, which I'm
>>> trying to figure out now, and I wonder if the two might be related.
>>
>> Sorry that there is crash still. __of_match_node seems to checking
>> for NULL arguments , feels like some invalid pointer was passed in.
>> Is there any particular sequence to try for this ?
>
>Ah, I did figure it out - it wasn't actually a NULL dereference, but an
>unmapped address. Turns out __iommu_of_table is in initdata, so any
>driver probing after init, connected to an unprobed IOMMU (in this case
>disabled in DT), trips over trying to match the now-freed table. I'm
>working on the fix - technically the bug's in my patch (#2) anyway ;)
>

Ok, thanks for bringing this out. There is also an issue that
Sinan has mentioned while testing the ACPI hotplug path, probably
its related to the above, not sure. I will try to check more on that
in the meanwhile. Then, taking your fix and fixing the hotplug case
i will do one more repost.

Regards,
 Sricharan


WARNING: multiple messages have this Message-ID (diff)
From: "Sricharan" <sricharan@codeaurora.org>
To: "'Robin Murphy'" <robin.murphy@arm.com>,
	"'Tomasz Nowicki'" <tn@semihalf.com>, <will.deacon@arm.com>,
	<joro@8bytes.org>, <lorenzo.pieralisi@arm.com>,
	<iommu@lists.linux-foundation.org>,
	<linux-arm-kernel@lists.infradead.org>,
	<linux-arm-msm@vger.kernel.org>, <m.szyprowski@samsung.com>,
	<bhelgaas@google.com>, <linux-pci@vger.kernel.org>,
	<linux-acpi@vger.kernel.org>
Subject: RE: [PATCH V7 01/11] iommu/of: Refactor of_iommu_configure() for error handling
Date: Mon, 30 Jan 2017 12:30:11 +0530	[thread overview]
Message-ID: <003601d27ac6$84866840$8d9338c0$@codeaurora.org> (raw)
In-Reply-To: <d27f04da-7d34-9640-1639-790d0732ed93@arm.com>

Hi Robin,

>> [..]
>>
>>>>> +const struct iommu_ops *of_iommu_configure(struct device *dev,
>>>>> +                       struct device_node *master_np)
>>>>> +{
>>>>> +    const struct iommu_ops *ops;
>>>>> +
>>>>> +    if (!master_np)
>>>>> +        return NULL;
>>>>> +
>>>>> +    if (dev_is_pci(dev))
>>>>> +        ops = of_pci_iommu_init(to_pci_dev(dev), master_np);
>>>>
>>>> I gave the whole patch set a try on ThunderX. really_probe() is failing
>>>> on dma_configure()->of_pci_iommu_init() for each PCI device.
>>>
>>> When you say "failing", do you mean cleanly, or with a crash? I've
>>> managed to hit __of_match_node() dereferencing NULL from
>>> of_iommu_xlate() in a horribly complicated chain of events, which I'm
>>> trying to figure out now, and I wonder if the two might be related.
>>
>> Sorry that there is crash still. __of_match_node seems to checking
>> for NULL arguments , feels like some invalid pointer was passed in.
>> Is there any particular sequence to try for this ?
>
>Ah, I did figure it out - it wasn't actually a NULL dereference, but an
>unmapped address. Turns out __iommu_of_table is in initdata, so any
>driver probing after init, connected to an unprobed IOMMU (in this case
>disabled in DT), trips over trying to match the now-freed table. I'm
>working on the fix - technically the bug's in my patch (#2) anyway ;)
>

Ok, thanks for bringing this out. There is also an issue that
Sinan has mentioned while testing the ACPI hotplug path, probably
its related to the above, not sure. I will try to check more on that
in the meanwhile. Then, taking your fix and fixing the hotplug case
i will do one more repost.

Regards,
 Sricharan


WARNING: multiple messages have this Message-ID (diff)
From: sricharan@codeaurora.org (Sricharan)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH V7 01/11] iommu/of: Refactor of_iommu_configure() for error handling
Date: Mon, 30 Jan 2017 12:30:11 +0530	[thread overview]
Message-ID: <003601d27ac6$84866840$8d9338c0$@codeaurora.org> (raw)
In-Reply-To: <d27f04da-7d34-9640-1639-790d0732ed93@arm.com>

Hi Robin,

>> [..]
>>
>>>>> +const struct iommu_ops *of_iommu_configure(struct device *dev,
>>>>> +                       struct device_node *master_np)
>>>>> +{
>>>>> +    const struct iommu_ops *ops;
>>>>> +
>>>>> +    if (!master_np)
>>>>> +        return NULL;
>>>>> +
>>>>> +    if (dev_is_pci(dev))
>>>>> +        ops = of_pci_iommu_init(to_pci_dev(dev), master_np);
>>>>
>>>> I gave the whole patch set a try on ThunderX. really_probe() is failing
>>>> on dma_configure()->of_pci_iommu_init() for each PCI device.
>>>
>>> When you say "failing", do you mean cleanly, or with a crash? I've
>>> managed to hit __of_match_node() dereferencing NULL from
>>> of_iommu_xlate() in a horribly complicated chain of events, which I'm
>>> trying to figure out now, and I wonder if the two might be related.
>>
>> Sorry that there is crash still. __of_match_node seems to checking
>> for NULL arguments , feels like some invalid pointer was passed in.
>> Is there any particular sequence to try for this ?
>
>Ah, I did figure it out - it wasn't actually a NULL dereference, but an
>unmapped address. Turns out __iommu_of_table is in initdata, so any
>driver probing after init, connected to an unprobed IOMMU (in this case
>disabled in DT), trips over trying to match the now-freed table. I'm
>working on the fix - technically the bug's in my patch (#2) anyway ;)
>

Ok, thanks for bringing this out. There is also an issue that
Sinan has mentioned while testing the ACPI hotplug path, probably
its related to the above, not sure. I will try to check more on that
in the meanwhile. Then, taking your fix and fixing the hotplug case
i will do one more repost.

Regards,
 Sricharan

  reply	other threads:[~2017-01-30  7:00 UTC|newest]

Thread overview: 147+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CGME20170123161926epcas2p1cf464a2978d89d0c1fdd2f7cc6d38317@epcas2p1.samsung.com>
2017-01-23 16:18 ` [PATCH V7 00/11] IOMMU probe deferral support Sricharan R
2017-01-23 16:18   ` Sricharan R
2017-01-23 16:18   ` [PATCH V7 01/11] iommu/of: Refactor of_iommu_configure() for error handling Sricharan R
2017-01-23 16:18     ` Sricharan R
2017-01-23 16:18     ` Sricharan R
     [not found]     ` <1485188293-20263-2-git-send-email-sricharan-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2017-01-25 17:17       ` Tomasz Nowicki
2017-01-25 17:17         ` Tomasz Nowicki
2017-01-25 17:17         ` Tomasz Nowicki
2017-01-25 17:35         ` Robin Murphy
2017-01-25 17:35           ` Robin Murphy
2017-01-25 18:13           ` Tomasz Nowicki
2017-01-25 18:13             ` Tomasz Nowicki
     [not found]           ` <c7bad124-d9f2-0ddf-168f-0b1950d3e1ed-5wv7dgnIgG8@public.gmane.org>
2017-01-27 18:00             ` Sricharan
2017-01-27 18:00               ` Sricharan
2017-01-27 18:00               ` Sricharan
2017-01-27 18:19               ` Robin Murphy
2017-01-27 18:19                 ` Robin Murphy
2017-01-27 18:19                 ` Robin Murphy
2017-01-30  7:00                 ` Sricharan [this message]
2017-01-30  7:00                   ` Sricharan
2017-01-30  7:00                   ` Sricharan
2017-01-30 18:42                   ` Robin Murphy
2017-01-30 18:42                     ` Robin Murphy
2017-01-30 18:42                     ` Robin Murphy
     [not found]                     ` <8387d057-15bd-500c-134e-0e731ff837d6-5wv7dgnIgG8@public.gmane.org>
2017-01-31 13:11                       ` Sricharan
2017-01-31 13:11                         ` Sricharan
2017-01-31 13:11                         ` Sricharan
2017-01-23 16:18   ` [PATCH V7 02/11] iommu/of: Prepare for deferred IOMMU configuration Sricharan R
2017-01-23 16:18     ` Sricharan R
2017-01-23 16:18   ` [PATCH V7 03/11] of: dma: Move range size workaround to of_dma_get_range() Sricharan R
2017-01-23 16:18     ` Sricharan R
2017-01-23 16:18   ` [PATCH V7 05/11] ACPI/IORT: Add function to check SMMUs drivers presence Sricharan R
2017-01-23 16:18     ` Sricharan R
2017-01-23 16:18   ` [PATCH V7 06/11] of/acpi: Configure dma operations at probe time for platform/amba/pci bus devices Sricharan R
2017-01-23 16:18     ` Sricharan R
2017-01-28 21:08     ` Bjorn Helgaas
2017-01-28 21:08       ` Bjorn Helgaas
2017-01-30  7:09     ` Rafael J. Wysocki
2017-01-30  7:09       ` Rafael J. Wysocki
2017-01-23 16:18   ` [PATCH V7 07/11] iommu: of: Handle IOMMU lookup failure with deferred probing or error Sricharan R
2017-01-23 16:18     ` Sricharan R
     [not found]     ` <1485188293-20263-8-git-send-email-sricharan-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2017-01-28 21:03       ` Bjorn Helgaas
2017-01-28 21:03         ` Bjorn Helgaas
2017-01-28 21:03         ` Bjorn Helgaas
2017-01-30  8:01         ` Sricharan
2017-01-30  8:01           ` Sricharan
2017-01-30  8:01           ` Sricharan
2017-01-29 16:36     ` Sinan Kaya
2017-01-29 16:36       ` Sinan Kaya
2017-01-29 16:36       ` Sinan Kaya
     [not found]       ` <34a703f0-3b37-88f0-46fa-b56ab6717a42-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2017-01-30 12:00         ` Sricharan
2017-01-30 12:00           ` Sricharan
2017-01-30 12:00           ` Sricharan
2017-01-23 16:18   ` [PATCH V7 08/11] drivers: acpi: " Sricharan R
2017-01-23 16:18     ` Sricharan R
2017-01-24 12:37     ` Lorenzo Pieralisi
2017-01-24 12:37       ` Lorenzo Pieralisi
2017-01-24 13:14       ` Hanjun Guo
2017-01-24 13:14         ` Hanjun Guo
2017-01-24 13:14         ` Hanjun Guo
2017-01-25  7:31       ` Sricharan
2017-01-25  7:31         ` Sricharan
2017-01-25  7:31         ` Sricharan
2017-01-29 17:53       ` Sinan Kaya
2017-01-29 17:53         ` Sinan Kaya
2017-01-29 17:53         ` Sinan Kaya
     [not found]         ` <f2370671-ece8-fbee-de19-350dd625088f-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2017-01-30 12:22           ` Robin Murphy
2017-01-30 12:22             ` Robin Murphy
2017-01-30 12:22             ` Robin Murphy
     [not found]             ` <93e79759-d614-9b36-d5ab-63e8eb725009-5wv7dgnIgG8@public.gmane.org>
2017-01-30 13:59               ` Sinan Kaya
2017-01-30 13:59                 ` Sinan Kaya
2017-01-30 13:59                 ` Sinan Kaya
     [not found]                 ` <14751205-f034-7f0d-442a-854c3909425c-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2017-01-30 14:23                   ` Nate Watterson
2017-01-30 14:23                     ` Nate Watterson
2017-01-30 14:23                     ` Nate Watterson
     [not found]                     ` <5ba9f366d6e25397cdef8ad95b49e199-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2017-01-30 14:33                       ` Sinan Kaya
2017-01-30 14:33                         ` Sinan Kaya
2017-01-30 14:33                         ` Sinan Kaya
2017-01-30 14:38                         ` Will Deacon
2017-01-30 14:38                           ` Will Deacon
2017-01-30 14:38                           ` Will Deacon
     [not found]                           ` <20170130143851.GJ16461-5wv7dgnIgG8@public.gmane.org>
2017-01-30 14:54                             ` Nate Watterson
2017-01-30 14:54                               ` Nate Watterson
2017-01-30 14:54                               ` Nate Watterson
     [not found]                               ` <b2e50c17de156341deab9fb8e91a8dec-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2017-01-30 15:46                                 ` Sinan Kaya
2017-01-30 15:46                                   ` Sinan Kaya
2017-01-30 15:46                                   ` Sinan Kaya
     [not found]                                   ` <1e048aff-0d77-b9f2-ebf8-2ba315b90ca7-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2017-01-30 16:51                                     ` Lorenzo Pieralisi
2017-01-30 16:51                                       ` Lorenzo Pieralisi
2017-01-30 16:51                                       ` Lorenzo Pieralisi
2017-01-30 20:03                                       ` Sinan Kaya
2017-01-30 20:03                                         ` Sinan Kaya
2017-02-01 18:52                                         ` Lorenzo Pieralisi
2017-02-01 18:52                                           ` Lorenzo Pieralisi
2017-02-01 18:52                                           ` Lorenzo Pieralisi
2017-02-01 19:10                                           ` Sinan Kaya
2017-02-01 19:10                                             ` Sinan Kaya
2017-02-01 19:10                                             ` Sinan Kaya
2017-02-02 19:01                                           ` Nate Watterson
2017-02-02 19:01                                             ` Nate Watterson
     [not found]                                             ` <3f4aa4c1e660c7e62256de9ca64fc822-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2017-02-03  3:37                                               ` Hanjun Guo
2017-02-03  3:37                                                 ` Hanjun Guo
2017-02-03  3:37                                                 ` Hanjun Guo
2017-02-03  3:37                                             ` Sricharan
2017-02-03  3:37                                               ` Sricharan
2017-02-03  3:37                                               ` Sricharan
2017-01-23 16:18   ` [PATCH V7 09/11] arm64: dma-mapping: Remove the notifier trick to handle early setting of dma_ops Sricharan R
2017-01-23 16:18     ` Sricharan R
     [not found]     ` <1485188293-20263-10-git-send-email-sricharan-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2017-01-28 21:06       ` Bjorn Helgaas
2017-01-28 21:06         ` Bjorn Helgaas
2017-01-28 21:06         ` Bjorn Helgaas
     [not found]         ` <20170128210611.GF20550-1RhO1Y9PlrlHTL0Zs8A6p5iNqAH0jzoTYJqu5kTmcBRl57MIdRCFDg@public.gmane.org>
2017-01-30  8:04           ` Sricharan
2017-01-30  8:04             ` Sricharan
2017-01-30  8:04             ` Sricharan
2017-01-23 16:18   ` [PATCH V7 10/11] iommu/arm-smmu: Clean up early-probing workarounds Sricharan R
2017-01-23 16:18     ` Sricharan R
2017-01-25 17:28     ` Tomasz Nowicki
2017-01-25 17:28       ` Tomasz Nowicki
     [not found]     ` <1485188293-20263-11-git-send-email-sricharan-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2017-01-28 21:07       ` Bjorn Helgaas
2017-01-28 21:07         ` Bjorn Helgaas
2017-01-28 21:07         ` Bjorn Helgaas
     [not found]         ` <20170128210709.GG20550-1RhO1Y9PlrlHTL0Zs8A6p5iNqAH0jzoTYJqu5kTmcBRl57MIdRCFDg@public.gmane.org>
2017-01-30  8:05           ` Sricharan
2017-01-30  8:05             ` Sricharan
2017-01-30  8:05             ` Sricharan
2017-01-23 16:18   ` [PATCH V7 11/11] ACPI/IORT: Remove linker section for IORT entries probing Sricharan R
2017-01-23 16:18     ` Sricharan R
     [not found]   ` <1485188293-20263-1-git-send-email-sricharan-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2017-01-23 16:18     ` [PATCH V7 04/11] of: dma: Make of_dma_deconfigure() public Sricharan R
2017-01-23 16:18       ` Sricharan R
2017-01-23 16:18       ` Sricharan R
2017-01-24  7:40     ` [PATCH V7 00/11] IOMMU probe deferral support Marek Szyprowski
2017-01-24  7:40       ` Marek Szyprowski
2017-01-24  7:40       ` Marek Szyprowski
2017-01-24 11:15       ` Sricharan
2017-01-24 11:15         ` Sricharan
2017-01-24 11:15         ` Sricharan
2017-01-25  4:33     ` Hanjun Guo
2017-01-25  4:33       ` Hanjun Guo
2017-01-25  4:33       ` Hanjun Guo
2017-01-25  7:33       ` Sricharan
2017-01-25  7:33         ` Sricharan
2017-01-25  7:33         ` Sricharan
2017-01-28 21:10     ` Bjorn Helgaas
2017-01-28 21:10       ` Bjorn Helgaas
2017-01-28 21:10       ` Bjorn Helgaas
     [not found]       ` <20170128211029.GI20550-1RhO1Y9PlrlHTL0Zs8A6p5iNqAH0jzoTYJqu5kTmcBRl57MIdRCFDg@public.gmane.org>
2017-01-30  9:20         ` Sricharan
2017-01-30  9:20           ` Sricharan
2017-01-30  9:20           ` Sricharan

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='003601d27ac6$84866840$8d9338c0$@codeaurora.org' \
    --to=sricharan@codeaurora.org \
    --cc=bhelgaas@google.com \
    --cc=iommu@lists.linux-foundation.org \
    --cc=joro@8bytes.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=lorenzo.pieralisi@arm.com \
    --cc=m.szyprowski@samsung.com \
    --cc=robin.murphy@arm.com \
    --cc=tn@semihalf.com \
    --cc=will.deacon@arm.com \
    /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.