From patchwork Fri Apr 25 17:16:39 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bjorn Helgaas X-Patchwork-Id: 342948 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 147B6140159 for ; Sat, 26 Apr 2014 03:18:16 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752158AbaDYRQ4 (ORCPT ); Fri, 25 Apr 2014 13:16:56 -0400 Received: from mail-pd0-f182.google.com ([209.85.192.182]:57012 "EHLO mail-pd0-f182.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752327AbaDYRQn (ORCPT ); Fri, 25 Apr 2014 13:16:43 -0400 Received: by mail-pd0-f182.google.com with SMTP id y10so3382198pdj.27 for ; Fri, 25 Apr 2014 10:16:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=subject:to:from:cc:date:message-id:in-reply-to:references :user-agent:mime-version:content-type:content-transfer-encoding; bh=RvVx0mnBLff9WatSsQpVLIpK28nZfrqCaxZahlBCuPc=; b=XZknzNn2RaeHQBPeJbGPgHu0/y2AYT1q59+Fc0qii2jEJ186pJ/MC2I/DJCwmB+Nu5 bFU/eZGHjxUvyz0wYCtZcweBKWhOazPAg1jNJnyCNsbNh7d5yGa+/REgmuIuyO44EFvk y2TOPUKpaJngrOkXCGo0D9IRszWDe57hJdaig08Oajj6dC1vTIS+YZiEEl1rUc0dfu5h iRDhBoGu4Msi7f5eXA+/jRjLI/blR1srL1uaUXQ1NPRgYXgGofZdGg7bBNo+9p+0y38i gAR9mS6Q/q+lnPxQCu6HM9lVOj+k+47gzutCwtCaipg98X6SLHca5iNBP6aszp9nZ4V3 EO0g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:subject:to:from:cc:date:message-id:in-reply-to :references:user-agent:mime-version:content-type :content-transfer-encoding; bh=RvVx0mnBLff9WatSsQpVLIpK28nZfrqCaxZahlBCuPc=; b=hN2ACH6hDaIb65x2C/FaHWw3+suXtqnPlZhdrvvUyLglR6OcIATR0glAw4Pdgrr4sz ckyYfzAA7d9BhUY3zSlTDMI3mqO8o5OkukxBjMXuXswxYbnSxmHtTOcxNohl7ocwMNiE lbDiWFXsseBKvKgF92t/lhY3M6fi8BmMFbLnawzM6JLiUOzGn2enQVrnQQ0c4so1RbgO Tci0OAoOSYxS9n3mWuxt4jsDfIU4dpEngfdeuwfk/RJMPPTEumzsr+kqIfnVsGmZdffr 4y1Z8+o8lVWd/pzG+5CU0Kj8yzUZPG0NymOtJBpLVVYogwvyaWYvoDc1A6Q7Z4NpCeX/ vcwA== X-Gm-Message-State: ALoCoQmlS8FyI4TaSizq8pQFUDi32bFdnrKjBFvbojov7PH2dbUF3j2Fo6mjMgFjHAwxRIZYJmP2aO54RToQUgsljVJTVe/xJ+pG5Vr7A1qLBUI2GLMNPb9239yXczshiySrywuDWQl6JEoR2fBxQhj/agYo8J8H3nvn2q/J0+OXPyeVYIZ1MGYINCYdN+B1J9kizkPTLY+Ly1Y3b4wbQMYxRWdXiHAtprKz9nkMRuC9zCo7ks2DrzA= X-Received: by 10.68.197.66 with SMTP id is2mr12857263pbc.96.1398446203065; Fri, 25 Apr 2014 10:16:43 -0700 (PDT) Received: from localhost ([172.19.243.187]) by mx.google.com with ESMTPSA id vm3sm17140430pbc.45.2014.04.25.10.16.41 for (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Fri, 25 Apr 2014 10:16:42 -0700 (PDT) Subject: [PATCH 2/4] x86/PCI: Mark HPET BAR as IORESOURCE_PCI_FIXED To: linux-pci@vger.kernel.org From: Bjorn Helgaas Cc: David Airlie , Bodo Eggert <7eggert@gmx.de>, x86@kernel.org, linux-kernel@vger.kernel.org Date: Fri, 25 Apr 2014 11:16:39 -0600 Message-ID: <20140425171639.312.28185.stgit@bhelgaas-glaptop.roam.corp.google.com> In-Reply-To: <20140425171144.312.9601.stgit@bhelgaas-glaptop.roam.corp.google.com> References: <20140425171144.312.9601.stgit@bhelgaas-glaptop.roam.corp.google.com> User-Agent: StGit/0.16 MIME-Version: 1.0 Sender: linux-pci-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org Bodo reported that on the Asrock M3A UCC, v3.12.6 hangs during boot unless he uses "pci=nocrs". This regression was caused by 7bc5e3f2be32 ("x86/PCI: use host bridge _CRS info by default on 2008 and newer machines"), which appeared in v2.6.34. The reason is that the HPET address appears in a PCI device BAR, and this address is not contained in any of the host bridge windows. Linux moves the PCI BAR into a window, but the original address was published via the HPET table and an ACPI device, so changing the BAR is a bad idea: ACPI: HPET id: 0x43538301 base: 0xfed00000 pci_root PNP0A03:00: host bridge window [mem 0xd0000000-0xdfffffff] pci_root PNP0A03:00: host bridge window [mem 0xf0000000-0xfebfffff] pci 0000:00:14.0: [1002:4385] type 0 class 0x000c05 pci 0000:00:14.0: reg 14: [mem 0xfed00000-0xfed003ff] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0, 0 pnp 00:06: Plug and Play ACPI device, IDs PNP0103 (active) pnp 00:06: [mem 0xfed00000-0xfed003ff] This patch marks the BAR as IORESOURCE_PCI_FIXED to prevent Linux from moving it. This depends on a previous patch ("x86/PCI: Don't try to move IORESOURCE_PCI_FIXED resources") to check for this flag when pci_claim_resource() fails. Link: https://bugzilla.kernel.org/show_bug.cgi?id=68591 Reported-by: Bodo Eggert <7eggert@gmx.de> Signed-off-by: Bjorn Helgaas --- arch/x86/pci/fixup.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/arch/x86/pci/fixup.c b/arch/x86/pci/fixup.c index 94ae9ae9574f..d4359f9d74b6 100644 --- a/arch/x86/pci/fixup.c +++ b/arch/x86/pci/fixup.c @@ -6,6 +6,7 @@ #include #include #include +#include #include static void pci_fixup_i450nx(struct pci_dev *d) @@ -526,6 +527,17 @@ static void sb600_disable_hpet_bar(struct pci_dev *dev) } DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_ATI, 0x4385, sb600_disable_hpet_bar); +static void sb600_hpet_quirk(struct pci_dev *dev) +{ + struct resource *r = &dev->resource[0]; + + if (r->flags & IORESOURCE_MEM && r->start == hpet_address) { + r->flags |= IORESOURCE_PCI_FIXED; + dev_info(&dev->dev, "reg 0x10 contains HPET; making it immovable\n"); + } +} +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATI, 0x4385, sb600_hpet_quirk); + /* * Twinhead H12Y needs us to block out a region otherwise we map devices * there and any access kills the box.