All of lore.kernel.org
 help / color / mirror / Atom feed
From: Julien Grall <julien.grall@linaro.org>
To: Ian Campbell <Ian.Campbell@citrix.com>
Cc: Stefano Stabellini <stefano.stabellini@eu.citrix.com>,
	tim@xen.org, Andreas Herrmann <herrmann.der.user@googlemail.com>,
	stefano.stabellini@citrix.com,
	Andreas Herrmann <andreas.herrmann@calxeda.com>,
	xen-devel@lists.xenproject.org
Subject: Re: [PATCH v2 10/12] xen/iommu: smmu: Check for duplicate stream IDs when registering master devices
Date: Wed, 28 Jan 2015 11:39:48 +0000	[thread overview]
Message-ID: <54C8CA84.7020008@linaro.org> (raw)
In-Reply-To: <1422441494.16180.67.camel@citrix.com>

On 28/01/15 10:38, Ian Campbell wrote:
> On Tue, 2015-01-27 at 17:51 +0000, Julien Grall wrote:
>> On 27/01/15 17:44, Ian Campbell wrote:
>>> On Tue, 2015-01-27 at 17:33 +0000, Julien Grall wrote:
>>>> On 27/01/15 17:02, Stefano Stabellini wrote:
>>>>> On Tue, 27 Jan 2015, Julien Grall wrote:
>>>>>> On 27/01/15 16:30, Stefano Stabellini wrote:
>>>>>>> On Fri, 16 Jan 2015, Julien Grall wrote:
>>>>>>>> From: Andreas Herrmann <andreas.herrmann@calxeda.com>
>>>>>>>>
>>>>>>>> If DT information lists one stream ID twice for the master devices of
>>>>>>>> an SMMU this can cause a multi match when stream ID matching is used.
>>>>>>>> For stream ID indexing this might trigger an overwrite of an S2CR that
>>>>>>>> is already in use.
>>>>>>>>
>>>>>>>> So better check for duplicates when DT information is parsed.
>>>>>>>>
>>>>>>>> Taken from the linux ML:
>>>>>>>> http://lists.infradead.org/pipermail/linux-arm-kernel/2014-January/226099.html
>>>>>>>>
>>>>>>>> Cc: Andreas Herrmann <herrmann.der.user@googlemail.com>
>>>>>>>> Signed-off-by: Andreas Herrmann <andreas.herrmann@calxeda.com>
>>>>>>>> Signed-off-by: Julien Grall <julien.grall@linaro.org>
>>>>>>>
>>>>>>> Why didn't you just take a more recent version of the Linux smmu driver?
>>>>>>
>>>>>> The SMMU driver very is recent (see commit in the previous patch)...
>>>>>> Just this patch has never reached upstream.
>>>>>
>>>>> That is not good. It might be worth to wait for it to go upstream.
>>>>
>>>> The patch was sent one year ago. Just before Calxeda was shutdown.
>>>>
>>>> This is a requirement for the following patch. Do you think the other
>>>> patch should be upstream to Linux before?
>>>
>>> In general we should be reluctant to diverge over these things, since it
>>> just ends up making things harder for us in the future (e.g. the next
>>> resync or the one after).
>>>
>>> Is the issue being fixed here specific to Calxeda? e.g. is duplicate
>>> stream ids a h/w bug which has yet to be observed elsewhere or is it a
>>> valid configuration per the h/w specs which it just happens only Calxeda
>>> implemented?
>>
>> It's for catching possible error in the device tree.
> 
> So Calxeda h/w was buggy and provided a DT with duplicate IDs? Or does
> the hardware actually use duplicate IDs?

No, it's a safe guard for the algorithm.

> Can we fix this up in xen/arch/arm/platforms/midway.c somehow, perhaps
> with a new quirk or hook (e.g. ->fixup_dtb) instead of patching the
> imported code. Or by doing a post-hoc fixup after we init the smmu, i.e.
> out of line from the imported code.
> 
>>  If the ID is
>> duplicated the multi match algo in the following patch may not work
>> correctly.
> 
> Are either of these situations (duplicates in DT or in h/w) actually
> improper according to the spec? If not then the multi match algo ought
> to cope somehow, even if only by detecting and ignoring.

It would not be possible in the h/w. Because one streamid is assigned to
specific device.

But, the developer made have written by mistake twice the streamid for
the device.

>>> Unless it's a h/w bug I don't see why it couldn't go upstream first.
>>> Even if it is it might still stand a chance.
>>
>> Because nobody take care to upstream it (see why below).
> 
> I'm afraid I'm none the wiser having read below...
> 
>>>> If so, Calxeda server won't be able to use properly SMMU.
>>>>
>>>> Even though the server will never be used, I do all my SMMU development
>>>> on it.
>>>
>>> The fact that Calxeda are no longer around doesn't in itself preclude
>>> getting these patches upstreamed. After all, no one is deleting CX
>>> support and some people do have them (not just us). It's hardly the most
>>> obscure platform supported by Linux...
>>
>> By default Linux is by-passing the stream ID and the device is not using
>> the SMMU.
>>
>> You will have to use either passthrough or manually said : "I want to
>> enforce this device". And then you will see the error. So by default
>> both patches are not necessary.
> 
> Are you talking about under Xen or under Linux here?

I was talking about Linux.

> If Linux then the fact that you need to use passthrough or take other
> manual action to expose the issue doesn't invalidate the possibility of
> upstreaming the fix.

This patch is not strictly necessary, I could drop if you don't want it.

But the following patch is required to use the SATA with SMMU. It has
more stream IDs than stream matching register.

So Linux would have a problem when enforcing the device and/or use
passthrough for SATA.

Honestly, the patches has been for a long time on the mailing list and
nobody really care about it for now. So I don't have any plan to spend
time on upstreaming patch in Linux and it's not required for our use case.

Regards,

-- 
Julien Grall

  reply	other threads:[~2015-01-28 11:40 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-01-16 14:23 [PATCH v2 00/12] xen/arm: Resync the SMMU driver with the Linux one Julien Grall
2015-01-16 14:23 ` [PATCH v2 01/12] xen/arm: gic-v2: Change the device name in DT_DEVICE_START Julien Grall
2015-01-27 15:52   ` Stefano Stabellini
2015-01-16 14:23 ` [PATCH v2 02/12] xen/arm: vgic: Drop unecessary include asm/device.h Julien Grall
2015-01-27 15:53   ` Stefano Stabellini
2015-01-16 14:23 ` [PATCH v2 03/12] xen/dt: Extend dt_device_match to possibly store data Julien Grall
2015-01-27 15:57   ` Stefano Stabellini
2015-01-27 16:07     ` Julien Grall
2015-01-27 16:10       ` Stefano Stabellini
2015-01-27 16:35         ` Julien Grall
2015-01-27 16:46           ` Stefano Stabellini
2015-01-27 16:49             ` Julien Grall
2015-01-16 14:23 ` [PATCH v2 04/12] xen/arm: device: Rename device_type into device_match Julien Grall
2015-01-27 16:05   ` Stefano Stabellini
2015-01-27 16:09     ` Julien Grall
2015-01-27 16:13       ` Stefano Stabellini
2015-01-27 22:26         ` Julien Grall
2015-01-16 14:24 ` [PATCH v2 05/12] xen/iommu: arm: Remove temporary the SMMU driver Julien Grall
2015-01-27 16:05   ` Stefano Stabellini
2015-01-16 14:24 ` [PATCH v2 06/12] xen/arm: Introduce a generic way to describe device Julien Grall
2015-01-16 14:59   ` Jan Beulich
2015-01-16 15:01     ` Julien Grall
2015-01-27 16:13   ` Stefano Stabellini
2015-01-16 14:24 ` [PATCH v2 07/12] xen/iommu: Consolidate device assignment ops into a single set Julien Grall
2015-01-16 15:03   ` Jan Beulich
2015-01-27 16:16   ` Stefano Stabellini
2015-01-16 14:24 ` [PATCH v2 08/12] xen/arm: Describe device supported by a driver with dt_match_node Julien Grall
2015-01-27 16:28   ` Stefano Stabellini
2015-01-16 14:24 ` [PATCH v2 09/12] xen/iommu: arm: Import the SMMU driver from Linux Julien Grall
2015-01-27 16:28   ` Stefano Stabellini
2015-01-27 16:51     ` Julien Grall
2015-01-16 14:24 ` [PATCH v2 10/12] xen/iommu: smmu: Check for duplicate stream IDs when registering master devices Julien Grall
2015-01-27 16:30   ` Stefano Stabellini
2015-01-27 16:52     ` Julien Grall
2015-01-27 17:02       ` Stefano Stabellini
2015-01-27 17:33         ` Julien Grall
2015-01-27 17:36           ` Stefano Stabellini
2015-01-27 17:44           ` Ian Campbell
2015-01-27 17:51             ` Julien Grall
2015-01-27 20:54               ` Andreas Herrmann
2015-01-28 10:38               ` Ian Campbell
2015-01-28 11:39                 ` Julien Grall [this message]
2015-01-16 14:24 ` [PATCH v2 11/12] xen/iommu: smmu: Introduce automatic stream-id-masking Julien Grall
2015-01-16 14:24 ` [PATCH v2 12/12] xen/iommu: smmu: Add Xen specific code to be able to use the driver Julien Grall
2015-01-27 16:46   ` Stefano Stabellini
2015-01-27 17:05     ` Julien Grall
2015-01-27 17:34       ` Stefano Stabellini
2015-01-28 10:31         ` Ian Campbell
2015-01-28 11:49           ` Julien Grall
2015-01-28 12:13             ` Ian Campbell
2015-01-28 12:15             ` Stefano Stabellini

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=54C8CA84.7020008@linaro.org \
    --to=julien.grall@linaro.org \
    --cc=Ian.Campbell@citrix.com \
    --cc=andreas.herrmann@calxeda.com \
    --cc=herrmann.der.user@googlemail.com \
    --cc=stefano.stabellini@citrix.com \
    --cc=stefano.stabellini@eu.citrix.com \
    --cc=tim@xen.org \
    --cc=xen-devel@lists.xenproject.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 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.