Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp8687136imu; Thu, 15 Nov 2018 16:00:14 -0800 (PST) X-Google-Smtp-Source: AJdET5dBdV8o0iqcgtj0BTgM8OKMTODJ1Ml4xJiXgmPan91rIlc/qWkOeXqHRS58j8NJf63hfRZ7 X-Received: by 2002:a17:902:5a86:: with SMTP id r6mr8086216pli.301.1542326414583; Thu, 15 Nov 2018 16:00:14 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1542326414; cv=none; d=google.com; s=arc-20160816; b=VXIgYAH9JclPr8ljU8fLRGrN+G12sITNdlTHIYcTmn5ZV0mG8la9IHyX1+dAkCCNXi HqCMiJYpMBMu/dPCQnRN/Nhx2MGIoxPiuktjdajzj44EHt4tBqEeKf3SjAdU6Wr1sXTy ybT8Atttc4DYXHRAKPqq1aPrBTZWFTgb5N3OKxgDiYPmkU3rqSEX5QP87gnLccdeMVdU CdTi4VY/IrK6ONocBupv6nNY4ZDqBLFd6j2902r8nfGr5jjdZAVxlAs2a5T1SIDRzuFp vyZ/Z2qlwTGgX0SNcWZci51RtZSwkeKq0THNYrx/q+KEu3ixswHnaEVlCIWK3RO1YM39 07tA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:user-agent:references :message-id:in-reply-to:subject:cc:to:from:date; bh=BL5D/FSgdhPHuNSGPXML3rJbZ3xqEEF6UQD9xrKMmPU=; b=xUMDlKhYJ6mfDtSvpjaiCatdBP7Iffa3clmUDl1pYSgw+W0Q1J/emfXiN4iZJW4+F8 c7fwRLMxtHJTWDIJpCYpdrOpHrbNDYEt4Aty/Q+anwguOlZUP7IhJoDnjXfRkepeGb+j xo4zbJSSIgqJFxIN55Ahc1KkAq5vRa0pTI2Mr1ToQK+QofTuA5ktnapch8NBLCtXih9W z44SzAxm7fqKa8P3XtNC+kbevI1sOn8U/Ev3wcJqnfvTYs31fQdBTpOBZ063W5ZoL2Jd w49/6xxHaA/U0QhbgNoJ3C9+PpmhVcyBQrlzgWDeSx8OHdsD92zhf5t/AlmDtWUfWjWx UkvA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id w2si25942620pgh.565.2018.11.15.16.00.00; Thu, 15 Nov 2018 16:00:14 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388928AbeKPKII (ORCPT + 99 others); Fri, 16 Nov 2018 05:08:08 -0500 Received: from eddie.linux-mips.org ([148.251.95.138]:60626 "EHLO cvs.linux-mips.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725985AbeKPKIH (ORCPT ); Fri, 16 Nov 2018 05:08:07 -0500 Received: (from localhost user: 'macro', uid#1010) by eddie.linux-mips.org with ESMTP id S23990411AbeKOX4QsRHLR (ORCPT ); Fri, 16 Nov 2018 00:56:16 +0100 Date: Thu, 15 Nov 2018 23:56:16 +0000 (GMT) From: "Maciej W. Rozycki" To: Ralf Baechle , Paul Burton cc: Christoph Hellwig , linux-mips@linux-mips.org, linux-kernel@vger.kernel.org Subject: [PATCH v4 3/3] MIPS: SiByte: Enable swiotlb for SWARM, LittleSur and BigSur In-Reply-To: Message-ID: References: User-Agent: Alpine 2.21 (LFD 202 2017-01-01) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The Broadcom SiByte BCM1250, BCM1125, and BCM1125H SOCs have an onchip DRAM controller that supports memory amounts of up to 16GiB, and due to how the address decoder has been wired in the SOC any memory beyond 1GiB is actually mapped starting from 4GiB physical up, that is beyond the 32-bit addressable limit[1]. Consequently if the maximum amount of memory has been installed, then it will span up to 19GiB. Many of the evaluation boards we support that are based on one of these SOCs have their memory soldered and the amount present fits in the 32-bit address range. The BCM91250A SWARM board however has actual DIMM slots and accepts, depending on the peripherals revision of the SOC, up to 4GiB or 8GiB of memory in commercially available JEDEC modules[2]. I believe this is also the case with the BCM91250C2 LittleSur board. This means that up to either 3GiB or 7GiB of memory requires 64-bit addressing to access. I believe the BCM91480B BigSur board, which has the BCM1480 SOC instead, accepts at least as much memory, although I have no documentation or actual hardware available to verify that. Both systems have PCI slots installed for use by any PCI option boards, including ones that only support 32-bit addressing (additionally the 32-bit PCI host bridge of the BCM1250, BCM1125, and BCM1125H SOCs limits addressing to 32-bits), and there is no IOMMU available. Therefore for PCI DMA to work in the presence of memory beyond enable swiotlb for the affected systems. All the other SOC onchip DMA devices use 40-bit addressing and therefore can address the whole memory, so only enable swiotlb if PCI support and support for DMA beyond 4GiB have been both enabled in the configuration of the kernel. This shows up as follows: Broadcom SiByte BCM1250 B2 @ 800 MHz (SB1 rev 2) Board type: SiByte BCM91250A (SWARM) Determined physical RAM map: memory: 000000000fe7fe00 @ 0000000000000000 (usable) memory: 000000001ffffe00 @ 0000000080000000 (usable) memory: 000000000ffffe00 @ 00000000c0000000 (usable) memory: 0000000087fffe00 @ 0000000100000000 (usable) software IO TLB: mapped [mem 0xcbffc000-0xcfffc000] (64MB) in the bootstrap log and removes failures like these: defxx 0000:02:00.0: dma_direct_map_page: overflow 0x0000000185bc6080+4608 of device mask ffffffff bus mask 0 fddi0: Receive buffer allocation failed fddi0: Adapter open failed! IP-Config: Failed to open fddi0 defxx 0000:09:08.0: dma_direct_map_page: overflow 0x0000000185bc6080+4608 of device mask ffffffff bus mask 0 fddi1: Receive buffer allocation failed fddi1: Adapter open failed! IP-Config: Failed to open fddi1 when memory beyond 4GiB is handed out to devices that can only do 32-bit addressing. This updates commit cce335ae47e2 ("[MIPS] 64-bit Sibyte kernels need DMA32."). References: [1] "BCM1250/BCM1125/BCM1125H User Manual", Revision 1250_1125-UM100-R, Broadcom Corporation, 21 Oct 2002, Section 3: "System Overview", "Memory Map", pp. 34-38 [2] "BCM91250A User Manual", Revision 91250A-UM100-R, Broadcom Corporation, 18 May 2004, Section 3: "Physical Description", "Supported DRAM", p. 23 Signed-off-by: Maciej W. Rozycki References: cce335ae47e2 ("[MIPS] 64-bit Sibyte kernels need DMA32.") --- Hi, Sending v4 of 3/3 only with the update requested, due to the minor scope of the change. Hopefully patchwork gets it right. Maciej Changes from v3: - removed inline licence text. Changes from v2: - missing reference to [1] added. Changes from v1: - title updated to include LittleSur. --- arch/mips/Kconfig | 3 +++ arch/mips/sibyte/common/Makefile | 1 + arch/mips/sibyte/common/dma.c | 14 ++++++++++++++ 3 files changed, 18 insertions(+) linux-mips-sibyte-swiotlb.diff Index: linux-20181104-swarm64-eb/arch/mips/Kconfig =================================================================== --- linux-20181104-swarm64-eb.orig/arch/mips/Kconfig +++ linux-20181104-swarm64-eb/arch/mips/Kconfig @@ -794,6 +794,7 @@ config SIBYTE_SWARM select SYS_SUPPORTS_HIGHMEM select SYS_SUPPORTS_LITTLE_ENDIAN select ZONE_DMA32 if 64BIT + select SWIOTLB if ARCH_DMA_ADDR_T_64BIT && PCI config SIBYTE_LITTLESUR bool "Sibyte BCM91250C2-LittleSur" @@ -806,6 +807,7 @@ config SIBYTE_LITTLESUR select SYS_SUPPORTS_HIGHMEM select SYS_SUPPORTS_LITTLE_ENDIAN select ZONE_DMA32 if 64BIT + select SWIOTLB if ARCH_DMA_ADDR_T_64BIT && PCI config SIBYTE_SENTOSA bool "Sibyte BCM91250E-Sentosa" @@ -827,6 +829,7 @@ config SIBYTE_BIGSUR select SYS_SUPPORTS_HIGHMEM select SYS_SUPPORTS_LITTLE_ENDIAN select ZONE_DMA32 if 64BIT + select SWIOTLB if ARCH_DMA_ADDR_T_64BIT && PCI config SNI_RM bool "SNI RM200/300/400" Index: linux-20181104-swarm64-eb/arch/mips/sibyte/common/Makefile =================================================================== --- linux-20181104-swarm64-eb.orig/arch/mips/sibyte/common/Makefile +++ linux-20181104-swarm64-eb/arch/mips/sibyte/common/Makefile @@ -1,4 +1,5 @@ obj-y := cfe.o +obj-$(CONFIG_SWIOTLB) += dma.o obj-$(CONFIG_SIBYTE_BUS_WATCHER) += bus_watcher.o obj-$(CONFIG_SIBYTE_CFE_CONSOLE) += cfe_console.o obj-$(CONFIG_SIBYTE_TBPROF) += sb_tbprof.o Index: linux-20181104-swarm64-eb/arch/mips/sibyte/common/dma.c =================================================================== --- /dev/null +++ linux-20181104-swarm64-eb/arch/mips/sibyte/common/dma.c @@ -0,0 +1,14 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * DMA support for Broadcom SiByte platforms. + * + * Copyright (c) 2018 Maciej W. Rozycki + */ + +#include +#include + +void __init plat_swiotlb_setup(void) +{ + swiotlb_init(1); +}