Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752929AbbDBSTi (ORCPT ); Thu, 2 Apr 2015 14:19:38 -0400 Received: from mail-wi0-f172.google.com ([209.85.212.172]:35862 "EHLO mail-wi0-f172.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751856AbbDBSTI (ORCPT ); Thu, 2 Apr 2015 14:19:08 -0400 Date: Thu, 2 Apr 2015 20:19:03 +0200 From: Ingo Molnar To: Borislav Petkov Cc: Aravind Gopalakrishnan , tglx@linutronix.de, mingo@redhat.com, hpa@zytor.com, x86@kernel.org, bhelgaas@google.com, linux-kernel@vger.kernel.org, Suravee.Suthikulpanit@amd.com, joro@8bytes.org Subject: Re: [PATCH] x86, aperture: Check for GART before accessing GART registers Message-ID: <20150402181903.GA8723@gmail.com> References: <1427898728-3434-1-git-send-email-Aravind.Gopalakrishnan@amd.com> <20150402100135.GA5210@gmail.com> <551D661D.3030000@amd.com> <20150402160634.GB8045@gmail.com> <551D6CF5.1010604@amd.com> <20150402165356.GE4579@pd.tnic> <551D7695.2010509@amd.com> <20150402171705.GF4579@pd.tnic> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20150402171705.GF4579@pd.tnic> User-Agent: Mutt/1.5.23 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3060 Lines: 92 * Borislav Petkov wrote: > On Thu, Apr 02, 2015 at 12:04:21PM -0500, Aravind Gopalakrishnan wrote: > > >No need - I can amend the local copy I have here. > > Here's what I did: > > --- > From: Aravind Gopalakrishnan > Date: Wed, 1 Apr 2015 09:32:08 -0500 > Subject: [PATCH] x86/gart: Check for GART support before accessing GART > registers > MIME-Version: 1.0 > Content-Type: text/plain; charset=UTF-8 > Content-Transfer-Encoding: 8bit > > GART registers are not present in newer AMD processors (Fam15h, > Model 10h and later). So, avoid accesses to GART registers in PCI > config space by returning early in early_gart_iommu_check() and > gart_iommu_hole_init() if GART is not available. > > Current code doesn't break on existing processors but there are some > side effects: > > We get bogus AGP aperture messages which are simply noise on > GART-less processors: > > AGP: Node 0: aperture [bus addr 0x00000000-0x01ffffff] (32MB) > AGP: Your BIOS doesn't leave a aperture memory hole hah, someone should fix the typo in that message: s/a a/a > AGP: Please enable the IOMMU option in the BIOS setup > AGP: This costs you 64MB of RAM > AGP: Mapping aperture over RAM [mem 0xd4000000-0xd7ffffff] > > We can avoid calling allocate_aperture() and would not have to > wastefully reserve 64MB of RAM with memblock_reserve(). Also, we can > avoid having to loop through all PCI buses and devices twice, searching > for a non-existent AGP bridge if we bail out early. > > Refactor the family check used in amd_nb into an inline function so we s/amd_nb/amd_nb.c > > +static inline bool amd_gart_present(void) > +{ > + /* GART present only on Fam15h upto model 0fh */ s/h u/h, u > + if (amd_gart_present()) > amd_northbridges.flags |= AMD_NB_GART; > > /* > diff --git a/arch/x86/kernel/aperture_64.c b/arch/x86/kernel/aperture_64.c > index 76164e173a24..1cb170b06853 100644 > --- a/arch/x86/kernel/aperture_64.c > +++ b/arch/x86/kernel/aperture_64.c > @@ -262,7 +262,7 @@ void __init early_gart_iommu_check(void) > u64 aper_base = 0, last_aper_base = 0; > int aper_enabled = 0, last_aper_enabled = 0, last_valid = 0; > > - if (!early_pci_allowed()) > + if (!early_pci_allowed() || !amd_gart_present()) > return; > > /* This is mostly duplicate of iommu_hole_init */ > @@ -356,7 +356,7 @@ int __init gart_iommu_hole_init(void) > int i, node; > > if (gart_iommu_aperture_disabled || !fix_aperture || > - !early_pci_allowed()) > + !early_pci_allowed() || !amd_gart_present()) > return -ENODEV; So what happens if !early_pci_allowed() but the GART is present? We'll set amd_northbridges.flags |= AMD_NB_GART, but won't run any of the setup code in aperture_64.c, right? Is that a valid setup? Thanks, Ingo -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/