lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Wed, 20 Oct 2021 01:49:10 +0900
From:   Hector Martin <marcan@...can.st>
To:     Sven Peter <sven@...npeter.dev>, Joerg Roedel <joro@...tes.org>
Cc:     Martin Povišer <povik@...tonmail.com>,
        Alyssa Rosenzweig <alyssa@...enzweig.io>,
        Will Deacon <will@...nel.org>,
        iommu@...ts.linux-foundation.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH] iommu/dart: Initialize DART_STREAMS_ENABLE

On 20/10/2021 01.22, Sven Peter wrote:
> DART has an additional global register to control which streams are
> isolated. This register is a bit redundant since DART_TCR can already
> be used to control isolation and is usually initialized to DART_STREAM_ALL
> by the time we get control. Some DARTs (namely the one used for the audio
> controller) however have some streams disabled initially. Make sure those
> work by initializing DART_STREAMS_ENABLE during reset.
> 
> Reported-by: Martin Povišer <povik@...tonmail.com>
> Signed-off-by: Sven Peter <sven@...npeter.dev>
> ---
> 
> While this could technically count as a fix I don't think it needs to go to
> 5.15 since no driver that requires this is in there. The first driver
> that needs this will likely only be ready for the 5.17 merge window.
> 
>   drivers/iommu/apple-dart.c | 5 +++++
>   1 file changed, 5 insertions(+)
> 
> diff --git a/drivers/iommu/apple-dart.c b/drivers/iommu/apple-dart.c
> index ce92195db638..6f8c240d8d40 100644
> --- a/drivers/iommu/apple-dart.c
> +++ b/drivers/iommu/apple-dart.c
> @@ -70,6 +70,8 @@
>   #define DART_ERROR_ADDR_HI 0x54
>   #define DART_ERROR_ADDR_LO 0x50
>   
> +#define DART_STREAMS_ENABLE 0xfc
> +
>   #define DART_TCR(sid) (0x100 + 4 * (sid))
>   #define DART_TCR_TRANSLATE_ENABLE BIT(7)
>   #define DART_TCR_BYPASS0_ENABLE BIT(8)
> @@ -299,6 +301,9 @@ static int apple_dart_hw_reset(struct apple_dart *dart)
>   	apple_dart_hw_disable_dma(&stream_map);
>   	apple_dart_hw_clear_all_ttbrs(&stream_map);
>   
> +	/* enable all streams globally since TCR is used to control isolation */
> +	writel(DART_STREAM_ALL, dart->regs + DART_STREAMS_ENABLE);
> +
>   	/* clear any pending errors before the interrupt is unmasked */
>   	writel(readl(dart->regs + DART_ERROR), dart->regs + DART_ERROR);
>   
> 

Reviewed-by: Hector Martin <marcan@...can.st>

-- 
Hector Martin (marcan@...can.st)
Public Key: https://mrcn.st/pub

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ