mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-11-01 00:48:50 +00:00
ca36c36b78
Replace phys_to_dma()/dma_to_phys() looping algorithm with an O(1) algorithm The approach taken is inspired by the sparse memory implementation: take a certain number of high-order bits off the address them, use this as an index into a table containing an offset to the desired address and add it to the original value. There is a table for mapping physical addresses to DMA addresses and another one for the reverse mapping. The table sizes depend on how fine-grained the mappings need to be; Coarser granularity less to smaller tables. On a processor with 32-bit physical and DMA addresses, with 4 MIB granularity, memory usage is two 2048-byte arrays. Each 32-byte cache line thus covers 64 MiB of address space. Also, renames phys_to_bus() to phys_to_dma() and bus_to_phys() to dma_to_phys() to align with kernel usage. [Ralf: Fixed silly build breakage due to stackoverflow warning caused by huge array on stack.] Signed-off-by: David VomLehn <dvomlehn@cisco.com> To: linux-mips@linux-mips.org Patchwork: https://patchwork.linux-mips.org/patch/1257/ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
29 lines
1.1 KiB
Makefile
29 lines
1.1 KiB
Makefile
#
|
|
# Carsten Langgaard, carstenl@mips.com
|
|
# Copyright (C) 1999,2000 MIPS Technologies, Inc. All rights reserved.
|
|
#
|
|
# Carsten Langgaard, carstenl@mips.com
|
|
# Copyright (C) 2000 MIPS Technologies, Inc. All rights reserved.
|
|
# Portions copyright (C) 2009 Cisco Systems, Inc.
|
|
#
|
|
# This program is free software; you can distribute it and/or modify it
|
|
# under the terms of the GNU General Public License (Version 2) as
|
|
# published by the Free Software Foundation.
|
|
#
|
|
# This program is distributed in the hope it will be useful, but WITHOUT
|
|
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
# for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License along
|
|
# with this program; if not, write to the Free Software Foundation, Inc.,
|
|
# 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
|
|
#
|
|
# Makefile for the Cisco PowerTV-specific kernel interface routines
|
|
# under Linux.
|
|
#
|
|
|
|
obj-y += init.o ioremap.o memory.o powertv_setup.o reset.o time.o \
|
|
asic/ pci/
|
|
|
|
EXTRA_CFLAGS += -Wall -Werror
|