linux/arch/mips
Maciej W. Rozycki 3747b9d6b0
MIPS: SiByte: Set 32-bit bus mask for BCM1250 PCI
The Broadcom SiByte BCM1250, BCM1125H and BCM1125 SOCs have an onchip
32-bit PCI host bridge, and the two former SOCs also have an onchip HT
host bridge.  The HT host bridge, where present, appears in the PCI
configuration space as if it was a device on the 32-bit PCI bus behind
the PCI host bridge, however at the hardware level its signals are
routed separately, so these two devices are actually peer host bridges.

As documented[1] and observed in reality the 32-bit PCI host bridge does
not support 64-bit addressing as it does not support the Dual Address
Cycle (DAC) PCI command, and naturally, being 32-bit only, it has no
means to carry the high 32 address bits otherwise.  However the DRAM
controller also included in the SOC 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.  Consequently if the
maximum amount of memory has been installed, then it will span up to
19GiB.

Contrariwise, the HT host bridge does support full 40-bit addressing
defined by the HyperTransport (formerly LDT) specification the bridge
adheres to, depending on the peripherals revision of the SOC[2] either
revision 0.17[3] or revision 1.03[4].  This allows addressing any and
all memory installed, and well beyond.

Set the bus mask then to limit DMA addressing to 32 bits for all the
devices down the 32-bit PCI host bridge, excluding however any devices
that are down the HT host bridge.

References:

[1] "BCM1250/BCM1125/BCM1125H User Manual", Revision 1250_1125-UM100-R,
    Broadcom Corporation, 21 Oct 2002, Section 8: "PCI Bus and
    HyperTransport Fabric", "Introduction", p. 190

[2] same, Table 140: "HyperTransport Configuration Header (Type 1)", p.
    245

[3] "Lightning Data Transport IO Specification", Revision 0.17, Advanced
    Micro Devices, 21 Jan 2000, Section 3.2.1.2 "Command Packet", p. 8

[4] "HyperTransport I/O Link Specification", Revision 1.03,
    HyperTransport Technology Consortium, 10 Oct 2001, Section 3.2.1.2
    "Request Packet", pp. 27-28

Signed-off-by: Maciej W. Rozycki <macro@linux-mips.org>
Signed-off-by: Paul Burton <paul.burton@mips.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Patchwork: https://patchwork.linux-mips.org/patch/21106/
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: linux-mips@linux-mips.org
Cc: linux-kernel@vger.kernel.org
2018-11-15 10:57:44 -08:00
..
alchemy mtd: rawnand: Move platform_nand_xxx definitions out of rawnand.h 2018-10-03 11:12:25 +02:00
ar7 mm: remove include/linux/bootmem.h 2018-10-31 08:54:16 -07:00
ath25 mips: unify prom_putchar() declarations 2018-07-17 09:40:17 -07:00
ath79 mm: remove include/linux/bootmem.h 2018-10-31 08:54:16 -07:00
bcm47xx MIPS: BCM47XX: Enable USB power on Netgear WNDR3400v3 2018-08-29 11:11:00 -07:00
bcm63xx mm: remove include/linux/bootmem.h 2018-10-31 08:54:16 -07:00
bmips mm: remove include/linux/bootmem.h 2018-10-31 08:54:16 -07:00
boot MIPS: Boston: Disable EG20T prefetch 2018-11-09 17:20:17 -08:00
cavium-octeon mm: remove include/linux/bootmem.h 2018-10-31 08:54:16 -07:00
cobalt MIPS: Cobalt: Fix typo 2016-08-03 08:16:30 +02:00
configs MIPS: DEC: Add 64-bit DECstation defconfig 2018-11-06 15:37:24 -08:00
crypto MIPS: crypto: Add crc32 and crc32c hw accelerated module 2018-02-19 20:50:36 +00:00
dec mm: remove include/linux/bootmem.h 2018-10-31 08:54:16 -07:00
emma mm: remove include/linux/bootmem.h 2018-10-31 08:54:16 -07:00
fw mm: remove include/linux/bootmem.h 2018-10-31 08:54:16 -07:00
generic MIPS: mscc: add PCB120 to the ocelot fitImage 2018-10-09 10:38:29 -07:00
include MIPS: Use Kconfig to select CPU_NO_EFFICIENT_FFS 2018-11-12 14:26:16 -08:00
jazz mm: remove include/linux/bootmem.h 2018-10-31 08:54:16 -07:00
jz4740 JFFS2 changes: 2018-08-14 10:57:44 -07:00
kernel MIPS: Don't dump Hi & Lo regs on >= MIPSr6 2018-11-09 17:20:12 -08:00
kvm MIPS: Introduce CONFIG_MIPS_FP_SUPPORT 2018-11-09 10:23:15 -08:00
lantiq mm: remove include/linux/bootmem.h 2018-10-31 08:54:16 -07:00
lasat mm: remove include/linux/bootmem.h 2018-10-31 08:54:16 -07:00
lib MIPS: lib: Use kernel_pref & user_pref in memcpy() 2018-10-15 23:11:14 -07:00
loongson32 MIPS: Loongson: Merge load addresses 2018-07-30 18:59:01 -07:00
loongson64 MIPS: Simplify FP context initialization 2018-11-09 10:23:13 -08:00
math-emu MIPS: Ensure emulated FP sets PF_USED_MATH 2018-11-09 10:23:14 -08:00
mm mm: remove include/linux/bootmem.h 2018-10-31 08:54:16 -07:00
mti-malta mm: remove include/linux/bootmem.h 2018-10-31 08:54:16 -07:00
net bpf, mips: remove unused function 2018-05-14 19:11:45 -07:00
netlogic mm: remove include/linux/bootmem.h 2018-10-31 08:54:16 -07:00
oprofile MIPS: perf: More robustly probe for the presence of per-tc counters 2018-05-15 15:16:16 +01:00
paravirt mips: unify prom_putchar() declarations 2018-07-17 09:40:17 -07:00
pci MIPS: SiByte: Set 32-bit bus mask for BCM1250 PCI 2018-11-15 10:57:44 -08:00
pic32 mips: unify prom_putchar() declarations 2018-07-17 09:40:17 -07:00
pistachio License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
pmcs-msp71xx MIPS: Remove no-op/identity casts 2018-08-31 11:49:20 -07:00
pnx833x mtd: rawnand: Move platform_nand_xxx definitions out of rawnand.h 2018-10-03 11:12:25 +02:00
power License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
ralink mm: remove include/linux/bootmem.h 2018-10-31 08:54:16 -07:00
rb532 mm: remove include/linux/bootmem.h 2018-10-31 08:54:16 -07:00
sgi-ip22 MIPS: Remove no-op/identity casts 2018-08-31 11:49:20 -07:00
sgi-ip27 mm: remove include/linux/bootmem.h 2018-10-31 08:54:16 -07:00
sgi-ip32 MIPS: IP32: use generic dma noncoherent ops 2018-06-24 09:27:27 -07:00
sibyte mm: remove include/linux/bootmem.h 2018-10-31 08:54:16 -07:00
sni MIPS: sni: Remove the read_persistent_clock() 2018-05-14 23:58:25 +01:00
tools MIPS: Use a custom elf-entry program to find kernel entry point 2018-08-30 09:39:22 -07:00
txx9 mm: remove include/linux/bootmem.h 2018-10-31 08:54:16 -07:00
vdso kbuild: replace cc-name test with CONFIG_CC_IS_CLANG 2018-11-02 22:49:00 +09:00
vr41xx MIPS: Annotate cpu_wait implementations with __cpuidle 2018-06-28 14:18:54 -07:00
Kbuild MIPS: Disable Werror when W= is set 2017-04-10 11:56:07 +02:00
Kbuild.platforms MIPS: Xilfpga: Switch to using generic defconfigs 2017-11-08 22:54:14 +00:00
Kconfig MIPS: Use Kconfig to select CPU_NO_EFFICIENT_FFS 2018-11-12 14:26:16 -08:00
Kconfig.debug Kconfig: consolidate the "Kernel hacking" menu 2018-08-02 08:06:48 +09:00
Makefile MIPS: Don't compile math-emu when CONFIG_MIPS_FP_SUPPORT=n 2018-11-09 10:23:18 -08:00
Makefile.postlink License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00