From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753427Ab0CHJhc (ORCPT ); Mon, 8 Mar 2010 04:37:32 -0500 Received: from sca-es-mail-2.Sun.COM ([192.18.43.133]:54214 "EHLO sca-es-mail-2.sun.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753355Ab0CHJh0 (ORCPT ); Mon, 8 Mar 2010 04:37:26 -0500 MIME-version: 1.0 Content-transfer-encoding: 7BIT Content-type: TEXT/PLAIN Date: Mon, 08 Mar 2010 01:36:31 -0800 From: Yinghai Lu Subject: [PATCH 2/4] x86: make 820 to be static In-reply-to: <1268040992-13807-1-git-send-email-yinghai@kernel.org> To: Ingo Molnar , Thomas Gleixner , "H. Peter Anvin" , Andrew Morton Cc: linux-kernel@vger.kernel.org, Yinghai Message-id: <1268040992-13807-4-git-send-email-yinghai@kernel.org> X-Mailer: git-send-email 1.6.4.2 References: <1268040992-13807-1-git-send-email-yinghai@kernel.org> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org put apterture_valid back to .c and early path still use e820_any_mapped() Signed-off-by: Yinghai --- arch/x86/include/asm/gart.h | 22 ---------------------- arch/x86/kernel/aperture_64.c | 22 ++++++++++++++++++++++ drivers/char/agp/amd64-agp.c | 39 ++++++++++++++++++++++++++++++++++++++- 3 files changed, 60 insertions(+), 23 deletions(-) Index: linux-2.6/arch/x86/include/asm/gart.h =================================================================== --- linux-2.6.orig/arch/x86/include/asm/gart.h +++ linux-2.6/arch/x86/include/asm/gart.h @@ -74,26 +74,4 @@ static inline void enable_gart_translati pci_write_config_dword(dev, AMD64_GARTAPERTURECTL, ctl); } -static inline int aperture_valid(u64 aper_base, u32 aper_size, u32 min_size) -{ - if (!aper_base) - return 0; - - if (aper_base + aper_size > 0x100000000ULL) { - printk(KERN_INFO "Aperture beyond 4GB. Ignoring.\n"); - return 0; - } - if (e820_any_mapped(aper_base, aper_base + aper_size, E820_RAM)) { - printk(KERN_INFO "Aperture pointing to e820 RAM. Ignoring.\n"); - return 0; - } - if (aper_size < min_size) { - printk(KERN_INFO "Aperture too small (%d MB) than (%d MB)\n", - aper_size>>20, min_size>>20); - return 0; - } - - return 1; -} - #endif /* _ASM_X86_GART_H */ Index: linux-2.6/arch/x86/kernel/aperture_64.c =================================================================== --- linux-2.6.orig/arch/x86/kernel/aperture_64.c +++ linux-2.6/arch/x86/kernel/aperture_64.c @@ -146,6 +146,28 @@ static u32 __init find_cap(int bus, int return 0; } +static int __init aperture_valid(u64 aper_base, u32 aper_size, u32 min_size) +{ + if (!aper_base) + return 0; + + if (aper_base + aper_size > 0x100000000ULL) { + printk(KERN_INFO "Aperture beyond 4GB. Ignoring.\n"); + return 0; + } + if (e820_any_mapped(aper_base, aper_base + aper_size, E820_RAM)) { + printk(KERN_INFO "Aperture pointing to e820 RAM. Ignoring.\n"); + return 0; + } + if (aper_size < min_size) { + printk(KERN_INFO "Aperture too small (%d MB) than (%d MB)\n", + aper_size>>20, min_size>>20); + return 0; + } + + return 1; +} + /* Read a standard AGPv3 bridge header */ static u32 __init read_agp(int bus, int slot, int func, int cap, u32 *order) { Index: linux-2.6/drivers/char/agp/amd64-agp.c =================================================================== --- linux-2.6.orig/drivers/char/agp/amd64-agp.c +++ linux-2.6/drivers/char/agp/amd64-agp.c @@ -14,7 +14,6 @@ #include #include #include /* PAGE_SIZE */ -#include #include #include #include "agp.h" @@ -231,6 +230,44 @@ static const struct agp_bridge_driver am .agp_type_to_mask_type = agp_generic_type_to_mask_type, }; +static int __devinit +__is_ram(unsigned long pfn, unsigned long nr_pages, void *arg) +{ + return 1; +} + +static int __devinit any_ram_in_range(u64 base, u64 size) +{ + unsigned long pfn, nr_pages; + + pfn = base >> PAGE_SHIFT; + nr_pages = size >> PAGE_SHIFT; + + return walk_system_ram_range(pfn, nr_pages, NULL, __is_ram) == 1; +} + +static int __devinit aperture_valid(u64 aper_base, u32 aper_size, u32 min_size) +{ + if (!aper_base) + return 0; + + if (aper_base + aper_size > 0x100000000ULL) { + printk(KERN_INFO "Aperture beyond 4GB. Ignoring.\n"); + return 0; + } + if (any_ram_in_range(aper_base, aper_size)) { + printk(KERN_INFO "Aperture pointing to E820 RAM. Ignoring.\n"); + return 0; + } + if (aper_size < min_size) { + printk(KERN_INFO "Aperture too small (%d MB) than (%d MB)\n", + aper_size>>20, min_size>>20); + return 0; + } + + return 1; +} + /* Some basic sanity checks for the aperture. */ static int __devinit agp_aperture_valid(u64 aper, u32 size) {