From: Douglas Miller <dougmill@linux.vnet.ibm.com>
To: Alexey Kardashevskiy <aik@ozlabs.ru>,
linuxppc-dev@lists.ozlabs.org,
Benjamin Herrenschmidt <benh@kernel.crashing.org>
Subject: Re: [RFC PATCH kernel] powerpc/ioda: Set "read" permission when "write" is set
Date: Tue, 9 Feb 2016 08:28:19 -0600 [thread overview]
Message-ID: <56B9F783.6070002@linux.vnet.ibm.com> (raw)
In-Reply-To: <56B942CF.9020906@ozlabs.ru>
We finally got the chance to test it end of last week. I forgot to
update everyone Monday. B all appearances, the patch fixes the problem.
We did not see any new issues with the patch (vs. same test scenarios
without).
I'll also update the bugzilla.
Thanks,
Doug
On 02/08/2016 07:37 PM, Alexey Kardashevskiy wrote:
> On 01/20/2016 06:01 AM, Douglas Miller wrote:
>>
>>
>> On 01/18/2016 09:52 PM, Alexey Kardashevskiy wrote:
>>> On 01/13/2016 01:24 PM, Douglas Miller wrote:
>>>>
>>>>
>>>> On 01/12/2016 05:07 PM, Benjamin Herrenschmidt wrote:
>>>>> On Tue, 2016-01-12 at 15:40 +1100, Alexey Kardashevskiy wrote:
>>>>>> Quite often drivers set only "write" permission assuming that this
>>>>>> includes "read" permission as well and this works on plenty
>>>>>> platforms.
>>>>>> However IODA2 is strict about this and produces an EEH when "read"
>>>>>> permission is not and reading happens.
>>>>>>
>>>>>> This adds a workaround in IODA code to always add the "read" bit
>>>>>> when
>>>>>> the "write" bit is set.
>>>>>>
>>>>>> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
>>>>>> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
>>>>>> ---
>>>>>>
>>>>>>
>>>>>> Ben, what was the driver which did not set "read" and caused EEH?
>>>>> aacraid
>>>>>
>>>>> Cheers,
>>>>> Ben.
>>>> Just to be precise, the driver wasn't responsible for setting READ.
>>>> The
>>>> driver called scsi_dma_map() and the scsicmd was set (by scsi
>>>> layer) as
>>>> DMA_FROM_DEVICE so the current code would set the permissions to
>>>> WRITE-ONLY. Previously, and in other architectures, this scsicmd
>>>> would have
>>>> resulted in READ+WRITE permissions on the DMA map.
>>>
>>>
>>> Does the patch fix the issue? Thanks.
>>>
>>>
>>>
>>>>>
>>>>>> ---
>>>>>> arch/powerpc/platforms/powernv/pci.c | 6 ++++++
>>>>>> 1 file changed, 6 insertions(+)
>>>>>>
>>>>>> diff --git a/arch/powerpc/platforms/powernv/pci.c
>>>>>> b/arch/powerpc/platforms/powernv/pci.c
>>>>>> index f2dd772..c7dcae5 100644
>>>>>> --- a/arch/powerpc/platforms/powernv/pci.c
>>>>>> +++ b/arch/powerpc/platforms/powernv/pci.c
>>>>>> @@ -601,6 +601,9 @@ int pnv_tce_build(struct iommu_table *tbl, long
>>>>>> index, long npages,
>>>>>> u64 rpn = __pa(uaddr) >> tbl->it_page_shift;
>>>>>> long i;
>>>>>> + if (proto_tce & TCE_PCI_WRITE)
>>>>>> + proto_tce |= TCE_PCI_READ;
>>>>>> +
>>>>>> for (i = 0; i < npages; i++) {
>>>>>> unsigned long newtce = proto_tce |
>>>>>> ((rpn + i) << tbl->it_page_shift);
>>>>>> @@ -622,6 +625,9 @@ int pnv_tce_xchg(struct iommu_table *tbl, long
>>>>>> index,
>>>>>> BUG_ON(*hpa & ~IOMMU_PAGE_MASK(tbl));
>>>>>> + if (newtce & TCE_PCI_WRITE)
>>>>>> + newtce |= TCE_PCI_READ;
>>>>>> +
>>>>>> oldtce = xchg(pnv_tce(tbl, idx), cpu_to_be64(newtce));
>>>>>> *hpa = be64_to_cpu(oldtce) & ~(TCE_PCI_READ |
>>>>>> TCE_PCI_WRITE);
>>>>>> *direction = iommu_tce_direction(oldtce);
>>>>> _______________________________________________
>>>>> Linuxppc-dev mailing list
>>>>> Linuxppc-dev@lists.ozlabs.org
>>>>> https://lists.ozlabs.org/listinfo/linuxppc-dev
>>>>
>>>> _______________________________________________
>>>> Linuxppc-dev mailing list
>>>> Linuxppc-dev@lists.ozlabs.org
>>>> https://lists.ozlabs.org/listinfo/linuxppc-dev
>>>
>>>
>> I am still working on getting a machine to try this on. From code
>> inspection, it looks like it should work. The problem is shortage of
>> machines and machines tied-up by Test.
>
> Any progress here? Thanks.
>
>
>
>
next prev parent reply other threads:[~2016-02-09 14:28 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-12 4:40 [RFC PATCH kernel] powerpc/ioda: Set "read" permission when "write" is set Alexey Kardashevskiy
2016-01-12 23:07 ` Benjamin Herrenschmidt
2016-01-13 2:24 ` Douglas Miller
2016-01-19 3:52 ` Alexey Kardashevskiy
2016-01-19 19:01 ` Douglas Miller
2016-02-09 1:37 ` Alexey Kardashevskiy
2016-02-09 14:28 ` Douglas Miller [this message]
2016-02-10 0:32 ` Alexey Kardashevskiy
2016-02-10 12:26 ` Douglas Miller
2016-02-16 3:18 ` [RFC, " Michael Ellerman
2016-02-16 13:20 ` Douglas Miller
2016-02-17 7:29 ` Alexey Kardashevskiy
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=56B9F783.6070002@linux.vnet.ibm.com \
--to=dougmill@linux.vnet.ibm.com \
--cc=aik@ozlabs.ru \
--cc=benh@kernel.crashing.org \
--cc=linuxppc-dev@lists.ozlabs.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).