All of lore.kernel.org
 help / color / mirror / Atom feed
From: Michal Simek <monstr@monstr.eu>
To: linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v2] ARM: l2c: Add support for the "arm, shared-override" property
Date: Tue, 02 Jun 2015 07:20:28 +0000	[thread overview]
Message-ID: <556D593C.1090002@monstr.eu> (raw)
In-Reply-To: <20150515135513.GH19345@e104818-lin.cambridge.arm.com>

[-- Attachment #1: Type: text/plain, Size: 3173 bytes --]

On 05/15/2015 03:55 PM, Catalin Marinas wrote:
> On Fri, May 15, 2015 at 11:10:28AM +0100, Russell King - ARM Linux wrote:
>> On Thu, May 07, 2015 at 05:02:57PM +0100, Catalin Marinas wrote:
>>> On Thu, May 07, 2015 at 11:27:11AM +0200, Geert Uytterhoeven wrote:
>>>> diff --git a/Documentation/devicetree/bindings/arm/l2cc.txt b/Documentation/devicetree/bindings/arm/l2cc.txt
>>>> index 0dbabe9a6b0abb91..2484aed78c86546d 100644
>>>> --- a/Documentation/devicetree/bindings/arm/l2cc.txt
>>>> +++ b/Documentation/devicetree/bindings/arm/l2cc.txt
>>>> @@ -67,6 +67,12 @@ Optional properties:
>>>>    disable if zero.
>>>>  - arm,prefetch-offset : Override prefetch offset value. Valid values are
>>>>    0-7, 15, 23, and 31.
>>>> +- arm,shared-override : The default behavior of the pl310 cache controller with
>>>> +  respect to the shareable attribute is to transform "normal memory
>>>> +  non-cacheable transactions" into "cacheable no allocate" (for reads) or
>>>> +  "write through no write allocate" (for writes).
>>>> +  On systems where this may cause DMA buffer corruption, this property must be
>>>> +  specified to indicate that such transforms are precluded.
>>>>  
>>>>  Example:
>>>>  
>>>> diff --git a/arch/arm/mm/cache-l2x0.c b/arch/arm/mm/cache-l2x0.c
>>>> index e309c8f35af5af61..86d0e7461e5b0b18 100644
>>>> --- a/arch/arm/mm/cache-l2x0.c
>>>> +++ b/arch/arm/mm/cache-l2x0.c
>>>> @@ -1149,6 +1149,11 @@ static void __init l2c310_of_parse(const struct device_node *np,
>>>>  		}
>>>>  	}
>>>>  
>>>> +	if (of_property_read_bool(np, "arm,shared-override")) {
>>>> +		*aux_val |= L2C_AUX_CTRL_SHARED_OVERRIDE;
>>>> +		*aux_mask &= ~L2C_AUX_CTRL_SHARED_OVERRIDE;
>>>> +	}
>>>> +
>>>>  	prefetch = l2x0_saved_regs.prefetch_ctrl;
>>>>  
>>>>  	ret = of_property_read_u32(np, "arm,double-linefill", &val);
>>>
>>> It looks fine to me.
>>>
>>> Acked-by: Catalin Marinas <catalin.marinas@arm.com>
>>>
>>> (even better if a subsequent patch adds this property to all the dts
>>> files containing "arm,pl310" ;))
>>
>> Even better would be for the boot loader/firmware to set the bit.
> 
> In an ideal world, I agree. But, arguably, we already set other bits in
> the PL310 AUXCTRL register (and related cache controllers, just look at
> the l2cc.txt bindings).
> 
> If you want to rely on firmware, can we at least check this bit and
> print a warning? Or go a step further and refuse to enable PL310 when
> this bit is clear? Otherwise coherent (non-cacheable) DMA operations are
> not safe.
> 

Any update on this one? I have the patch for Zynq pending and I want to
have any resolution on this in this generic way or simply by enabling it
via aux_mask as is here.
https://lkml.org/lkml/2015/5/12/51
This patch can be reverted when this generic solution reach mainline.

Thanks,
Michal

-- 
Michal Simek, Ing. (M.Eng), OpenPGP -> KeyID: FE3D1F91
w: www.monstr.eu p: +42-0-721842854
Maintainer of Linux kernel - Microblaze cpu - http://www.monstr.eu/fdt/
Maintainer of Linux kernel - Xilinx Zynq ARM architecture
Microblaze U-BOOT custodian and responsible for u-boot arm zynq platform



[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

WARNING: multiple messages have this Message-ID (diff)
From: Michal Simek <monstr@monstr.eu>
To: Catalin Marinas <catalin.marinas@arm.com>,
	Russell King - ARM Linux <linux@arm.linux.org.uk>
Cc: Mark Rutland <mark.rutland@arm.com>,
	Rob Herring <robh@kernel.org>, Arnd Bergmann <arnd@arndb.de>,
	Pawel Moll <pawel.moll@arm.com>,
	devicetree@vger.kernel.org, linux-sh@vger.kernel.org,
	Magnus Damm <magnus.damm@gmail.com>,
	Simon Horman <horms@verge.net.au>,
	Geert Uytterhoeven <geert+renesas@glider.be>,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v2] ARM: l2c: Add support for the "arm, shared-override" property
Date: Tue, 02 Jun 2015 09:20:28 +0200	[thread overview]
Message-ID: <556D593C.1090002@monstr.eu> (raw)
In-Reply-To: <20150515135513.GH19345@e104818-lin.cambridge.arm.com>

[-- Attachment #1: Type: text/plain, Size: 3173 bytes --]

On 05/15/2015 03:55 PM, Catalin Marinas wrote:
> On Fri, May 15, 2015 at 11:10:28AM +0100, Russell King - ARM Linux wrote:
>> On Thu, May 07, 2015 at 05:02:57PM +0100, Catalin Marinas wrote:
>>> On Thu, May 07, 2015 at 11:27:11AM +0200, Geert Uytterhoeven wrote:
>>>> diff --git a/Documentation/devicetree/bindings/arm/l2cc.txt b/Documentation/devicetree/bindings/arm/l2cc.txt
>>>> index 0dbabe9a6b0abb91..2484aed78c86546d 100644
>>>> --- a/Documentation/devicetree/bindings/arm/l2cc.txt
>>>> +++ b/Documentation/devicetree/bindings/arm/l2cc.txt
>>>> @@ -67,6 +67,12 @@ Optional properties:
>>>>    disable if zero.
>>>>  - arm,prefetch-offset : Override prefetch offset value. Valid values are
>>>>    0-7, 15, 23, and 31.
>>>> +- arm,shared-override : The default behavior of the pl310 cache controller with
>>>> +  respect to the shareable attribute is to transform "normal memory
>>>> +  non-cacheable transactions" into "cacheable no allocate" (for reads) or
>>>> +  "write through no write allocate" (for writes).
>>>> +  On systems where this may cause DMA buffer corruption, this property must be
>>>> +  specified to indicate that such transforms are precluded.
>>>>  
>>>>  Example:
>>>>  
>>>> diff --git a/arch/arm/mm/cache-l2x0.c b/arch/arm/mm/cache-l2x0.c
>>>> index e309c8f35af5af61..86d0e7461e5b0b18 100644
>>>> --- a/arch/arm/mm/cache-l2x0.c
>>>> +++ b/arch/arm/mm/cache-l2x0.c
>>>> @@ -1149,6 +1149,11 @@ static void __init l2c310_of_parse(const struct device_node *np,
>>>>  		}
>>>>  	}
>>>>  
>>>> +	if (of_property_read_bool(np, "arm,shared-override")) {
>>>> +		*aux_val |= L2C_AUX_CTRL_SHARED_OVERRIDE;
>>>> +		*aux_mask &= ~L2C_AUX_CTRL_SHARED_OVERRIDE;
>>>> +	}
>>>> +
>>>>  	prefetch = l2x0_saved_regs.prefetch_ctrl;
>>>>  
>>>>  	ret = of_property_read_u32(np, "arm,double-linefill", &val);
>>>
>>> It looks fine to me.
>>>
>>> Acked-by: Catalin Marinas <catalin.marinas@arm.com>
>>>
>>> (even better if a subsequent patch adds this property to all the dts
>>> files containing "arm,pl310" ;))
>>
>> Even better would be for the boot loader/firmware to set the bit.
> 
> In an ideal world, I agree. But, arguably, we already set other bits in
> the PL310 AUXCTRL register (and related cache controllers, just look at
> the l2cc.txt bindings).
> 
> If you want to rely on firmware, can we at least check this bit and
> print a warning? Or go a step further and refuse to enable PL310 when
> this bit is clear? Otherwise coherent (non-cacheable) DMA operations are
> not safe.
> 

Any update on this one? I have the patch for Zynq pending and I want to
have any resolution on this in this generic way or simply by enabling it
via aux_mask as is here.
https://lkml.org/lkml/2015/5/12/51
This patch can be reverted when this generic solution reach mainline.

Thanks,
Michal

-- 
Michal Simek, Ing. (M.Eng), OpenPGP -> KeyID: FE3D1F91
w: www.monstr.eu p: +42-0-721842854
Maintainer of Linux kernel - Microblaze cpu - http://www.monstr.eu/fdt/
Maintainer of Linux kernel - Xilinx Zynq ARM architecture
Microblaze U-BOOT custodian and responsible for u-boot arm zynq platform



[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

WARNING: multiple messages have this Message-ID (diff)
From: monstr@monstr.eu (Michal Simek)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2] ARM: l2c: Add support for the "arm, shared-override" property
Date: Tue, 02 Jun 2015 09:20:28 +0200	[thread overview]
Message-ID: <556D593C.1090002@monstr.eu> (raw)
In-Reply-To: <20150515135513.GH19345@e104818-lin.cambridge.arm.com>

On 05/15/2015 03:55 PM, Catalin Marinas wrote:
> On Fri, May 15, 2015 at 11:10:28AM +0100, Russell King - ARM Linux wrote:
>> On Thu, May 07, 2015 at 05:02:57PM +0100, Catalin Marinas wrote:
>>> On Thu, May 07, 2015 at 11:27:11AM +0200, Geert Uytterhoeven wrote:
>>>> diff --git a/Documentation/devicetree/bindings/arm/l2cc.txt b/Documentation/devicetree/bindings/arm/l2cc.txt
>>>> index 0dbabe9a6b0abb91..2484aed78c86546d 100644
>>>> --- a/Documentation/devicetree/bindings/arm/l2cc.txt
>>>> +++ b/Documentation/devicetree/bindings/arm/l2cc.txt
>>>> @@ -67,6 +67,12 @@ Optional properties:
>>>>    disable if zero.
>>>>  - arm,prefetch-offset : Override prefetch offset value. Valid values are
>>>>    0-7, 15, 23, and 31.
>>>> +- arm,shared-override : The default behavior of the pl310 cache controller with
>>>> +  respect to the shareable attribute is to transform "normal memory
>>>> +  non-cacheable transactions" into "cacheable no allocate" (for reads) or
>>>> +  "write through no write allocate" (for writes).
>>>> +  On systems where this may cause DMA buffer corruption, this property must be
>>>> +  specified to indicate that such transforms are precluded.
>>>>  
>>>>  Example:
>>>>  
>>>> diff --git a/arch/arm/mm/cache-l2x0.c b/arch/arm/mm/cache-l2x0.c
>>>> index e309c8f35af5af61..86d0e7461e5b0b18 100644
>>>> --- a/arch/arm/mm/cache-l2x0.c
>>>> +++ b/arch/arm/mm/cache-l2x0.c
>>>> @@ -1149,6 +1149,11 @@ static void __init l2c310_of_parse(const struct device_node *np,
>>>>  		}
>>>>  	}
>>>>  
>>>> +	if (of_property_read_bool(np, "arm,shared-override")) {
>>>> +		*aux_val |= L2C_AUX_CTRL_SHARED_OVERRIDE;
>>>> +		*aux_mask &= ~L2C_AUX_CTRL_SHARED_OVERRIDE;
>>>> +	}
>>>> +
>>>>  	prefetch = l2x0_saved_regs.prefetch_ctrl;
>>>>  
>>>>  	ret = of_property_read_u32(np, "arm,double-linefill", &val);
>>>
>>> It looks fine to me.
>>>
>>> Acked-by: Catalin Marinas <catalin.marinas@arm.com>
>>>
>>> (even better if a subsequent patch adds this property to all the dts
>>> files containing "arm,pl310" ;))
>>
>> Even better would be for the boot loader/firmware to set the bit.
> 
> In an ideal world, I agree. But, arguably, we already set other bits in
> the PL310 AUXCTRL register (and related cache controllers, just look at
> the l2cc.txt bindings).
> 
> If you want to rely on firmware, can we at least check this bit and
> print a warning? Or go a step further and refuse to enable PL310 when
> this bit is clear? Otherwise coherent (non-cacheable) DMA operations are
> not safe.
> 

Any update on this one? I have the patch for Zynq pending and I want to
have any resolution on this in this generic way or simply by enabling it
via aux_mask as is here.
https://lkml.org/lkml/2015/5/12/51
This patch can be reverted when this generic solution reach mainline.

Thanks,
Michal

-- 
Michal Simek, Ing. (M.Eng), OpenPGP -> KeyID: FE3D1F91
w: www.monstr.eu p: +42-0-721842854
Maintainer of Linux kernel - Microblaze cpu - http://www.monstr.eu/fdt/
Maintainer of Linux kernel - Xilinx Zynq ARM architecture
Microblaze U-BOOT custodian and responsible for u-boot arm zynq platform


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: OpenPGP digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20150602/4f0ac9e0/attachment.sig>

  reply	other threads:[~2015-06-02  7:20 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-07  9:27 [PATCH v2] ARM: l2c: Add support for the "arm,shared-override" property Geert Uytterhoeven
2015-05-07  9:27 ` [PATCH v2] ARM: l2c: Add support for the "arm, shared-override" property Geert Uytterhoeven
2015-05-07  9:27 ` [PATCH v2] ARM: l2c: Add support for the "arm,shared-override" property Geert Uytterhoeven
2015-05-07 16:02 ` [PATCH v2] ARM: l2c: Add support for the "arm, shared-override" property Catalin Marinas
2015-05-07 16:02   ` Catalin Marinas
2015-05-07 16:02   ` Catalin Marinas
2015-05-15 10:10   ` Russell King - ARM Linux
2015-05-15 10:10     ` Russell King - ARM Linux
2015-05-15 10:10     ` Russell King - ARM Linux
2015-05-15 13:55     ` Catalin Marinas
2015-05-15 13:55       ` Catalin Marinas
2015-05-15 13:55       ` Catalin Marinas
2015-06-02  7:20       ` Michal Simek [this message]
2015-06-02  7:20         ` Michal Simek
2015-06-02  7:20         ` Michal Simek
2015-06-25 21:19         ` Hauke Mehrtens
2015-06-25 21:19           ` Hauke Mehrtens
2015-06-25 21:19           ` Hauke Mehrtens
2015-06-26  7:15           ` Geert Uytterhoeven
2015-06-26  7:15             ` Geert Uytterhoeven
2015-06-26  7:15             ` Geert Uytterhoeven
2015-07-16  7:59             ` Geert Uytterhoeven
2015-07-16  7:59               ` Geert Uytterhoeven
2015-07-16  7:59               ` Geert Uytterhoeven

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=556D593C.1090002@monstr.eu \
    --to=monstr@monstr.eu \
    --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 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.