From patchwork Mon Dec 9 18:43:21 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nat Gurumoorthy X-Patchwork-Id: 299162 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 81D302C00AB for ; Tue, 10 Dec 2013 05:44:01 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932418Ab3LISnp (ORCPT ); Mon, 9 Dec 2013 13:43:45 -0500 Received: from mail-oa0-f74.google.com ([209.85.219.74]:36172 "EHLO mail-oa0-f74.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755804Ab3LISnn (ORCPT ); Mon, 9 Dec 2013 13:43:43 -0500 Received: by mail-oa0-f74.google.com with SMTP id o6so761361oag.5 for ; Mon, 09 Dec 2013 10:43:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=r/m6i+QitZeiwvXDLFUs/jDCAODYEPda8MqV9Z/xf7A=; b=GfsV2a6CqfvTCnD4i//gqzF/u0t6AJwL8AlXoByPlKL98TCk/wimLO75tuVzkk2/3+ 14ZEEbYqyeT1NjL2mixxi6Z/EHpTX79O63MlRwYeuQdXIdGIkNhKkKBPcXDvRjbP6ksn /cg4k2PhSjdlfFBdFEo3+LmaaJBYcNrW50Xnenlx7KFp5mc26Vg2+ZhQZnpHN6oaXnWT gE7RRvjQvdpyEi1gT1egnjZC6j46h9/YouGjMAFxJUfsjzkM+2C5VzArlciqqZSCmguY Dz/CENqQWZnaUKKuOd5zjsiyn/tvgFh6ZFXxldJKm9dgtIWiGPGuakfiseTl+MuFOGoO AGXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=r/m6i+QitZeiwvXDLFUs/jDCAODYEPda8MqV9Z/xf7A=; b=GFDpBz7VeA8hUH8mm2I2T+559swcO/Z9VsffWFrQp9d8CP9eNSw5iXqDkfW+PqsEzM GBADgFDOgLc1WwDb62iohHsZKEp/+LYsfYaYDlRti3nQLYDFvqP27b2G7qD6fJR8/Gmv HizucqocmmDKyXXw6ayjNVlmAHnZwPKTv//vqrZpU7+AnD8V5tRwEAY2pRl6VmM5cZPC a9Yr7Z9bfKVjrz8pMqzQY0YnvP1rgdjmTBhsEEaNv5kSLgYaE3tE8ER9GwkCgANcjxLS 2lXoBeydRE1JqE9ulHS5D2h4oD2G9OhNo4r+1vQhK4xfwk8joskT+ZvGG1n079EqSz/w 6Odg== X-Gm-Message-State: ALoCoQnk663k0AreHJXNtygKWEaQL3LUh51W0KA+/wO2SF11IRrslqSKQjkcEAEtiynKF27jaiDyarQgQM0JIk/U5ds2fgo5xb+dZrcXQfjoxiMWivyMjdvntFefGI5T+xUhiBLv7aG/1/btLnKXRX0ELCmhpG1e3VX833bp/Lmt15L6sBFgeK2LHKlrplYYypwZcClsnYZatch+R21T05z+hy4w5ALTXw== X-Received: by 10.182.161.105 with SMTP id xr9mr7294747obb.31.1386614622987; Mon, 09 Dec 2013 10:43:42 -0800 (PST) Received: from corp2gmr1-1.hot.corp.google.com (corp2gmr1-1.hot.corp.google.com [172.24.189.92]) by gmr-mx.google.com with ESMTPS id l41si13726204yhi.5.2013.12.09.10.43.42 for (version=TLSv1.1 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 09 Dec 2013 10:43:42 -0800 (PST) Received: from natg-linux.mtv.corp.google.com (natg-linux.mtv.corp.google.com [172.18.64.23]) by corp2gmr1-1.hot.corp.google.com (Postfix) with ESMTP id CCEAD31C1F8; Mon, 9 Dec 2013 10:43:42 -0800 (PST) Received: by natg-linux.mtv.corp.google.com (Postfix, from userid 128070) id 6F5DA200CB; Mon, 9 Dec 2013 10:43:42 -0800 (PST) From: Nat Gurumoorthy To: nsujir@broadcom.com, mchan@broadcom.com Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Nat Gurumoorthy Subject: [PATCH] net-tg3: Initialize REG_BASE_ADDR at PCI config offset 120 to 0 Date: Mon, 9 Dec 2013 10:43:21 -0800 Message-Id: <1386614601-9453-1-git-send-email-natg@google.com> X-Mailer: git-send-email 1.8.5.1 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org The new tg3 driver leaves REG_BASE_ADDR (PCI config offset 120) uninitialized. From power on reset this register may have garbage in it. The Register Base Address register defines the device local address of a register. The data pointed to by this location is read or written using the Register Data register (PCI config offset 128). When REG_BASE_ADDR has garbage any read or write of Register Data Register (PCI 128) will cause the PCI bus to lock up. The TCO watchdog will fire and bring down the system. Signed-off-by: Nat Gurumoorthy Acked-by: Michael Chan --- drivers/net/ethernet/broadcom/tg3.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/net/ethernet/broadcom/tg3.c b/drivers/net/ethernet/broadcom/tg3.c index 369b736..9a904fd 100644 --- a/drivers/net/ethernet/broadcom/tg3.c +++ b/drivers/net/ethernet/broadcom/tg3.c @@ -16499,6 +16499,9 @@ static int tg3_get_invariants(struct tg3 *tp, const struct pci_device_id *ent) /* Clear this out for sanity. */ tw32(TG3PCI_MEM_WIN_BASE_ADDR, 0); + /* Clear TG3PCI_REG_BASE_ADDR to prevent hangs. */ + tw32(TG3PCI_REG_BASE_ADDR, 0); + pci_read_config_dword(tp->pdev, TG3PCI_PCISTATE, &pci_state_reg); if ((pci_state_reg & PCISTATE_CONV_PCI_MODE) == 0 &&