From patchwork Sat Aug 8 00:46:19 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Du, Alek" X-Patchwork-Id: 40062 Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by demeter.kernel.org (8.14.2/8.14.2) with ESMTP id n780onQx011404 for ; Sat, 8 Aug 2009 00:50:49 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751648AbZHHAur (ORCPT ); Fri, 7 Aug 2009 20:50:47 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1752366AbZHHAur (ORCPT ); Fri, 7 Aug 2009 20:50:47 -0400 Received: from mga02.intel.com ([134.134.136.20]:14633 "EHLO mga02.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751648AbZHHAuq convert rfc822-to-8bit (ORCPT ); Fri, 7 Aug 2009 20:50:46 -0400 Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga101.jf.intel.com with ESMTP; 07 Aug 2009 17:38:53 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="4.43,344,1246863600"; d="scan'208";a="539583147" Received: from pgsmsx603.gar.corp.intel.com ([10.221.43.87]) by orsmga001.jf.intel.com with ESMTP; 07 Aug 2009 17:50:10 -0700 Received: from pgsmsx601.gar.corp.intel.com (10.221.43.69) by pgsmsx603.gar.corp.intel.com (10.221.43.87) with Microsoft SMTP Server (TLS) id 8.1.358.0; Sat, 8 Aug 2009 08:46:41 +0800 Received: from pdsmsx602.ccr.corp.intel.com (172.16.12.184) by pgsmsx601.gar.corp.intel.com (10.221.43.69) with Microsoft SMTP Server (TLS) id 8.1.358.0; Sat, 8 Aug 2009 08:46:41 +0800 Received: from dxy.sh.intel.com (10.239.36.37) by pdsmsx602.ccr.corp.intel.com (172.16.12.184) with Microsoft SMTP Server (TLS) id 8.1.358.0; Sat, 8 Aug 2009 08:46:40 +0800 Date: Sat, 8 Aug 2009 08:46:19 +0800 From: Alek Du To: "Rafael J. Wysocki" , Jesse Barnes CC: "linux-pci@vger.kernel.org" Subject: [PATCH v2] pci: check saved state before restore Message-ID: <20090808084619.6cb6e63d@dxy.sh.intel.com> In-Reply-To: <200908080016.04381.rjw@sisk.pl> References: <20090805164639.76cbbb0f@dxy.sh.intel.com> <20090807100946.64e677b0@jbarnes-g45> <200908072353.31775.rjw@sisk.pl> <200908080016.04381.rjw@sisk.pl> Organization: Intel Corp. X-Mailer: Claws Mail 3.6.1 (GTK+ 2.16.1; i486-pc-linux-gnu) MIME-Version: 1.0 Sender: linux-pci-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org Here is the updated one... From 972c7f371604f837a70cc5e9948749f423cf64eb Mon Sep 17 00:00:00 2001 From: Alek Du Date: Wed, 5 Aug 2009 15:25:26 +0800 Subject: [PATCH] pci: check saved state before restore Without the check, the config space may be filled with zeros. Though the driver should try to avoid call restoring before saving, but the pci layer also should check this. Also removed the existing check in pci_restore_standard_config. Signed-off-by: Alek Du Acked-by: Rafael J. Wysocki --- drivers/pci/pci-driver.c | 2 +- drivers/pci/pci.c | 2 ++ 2 files changed, 3 insertions(+), 1 deletions(-) diff --git a/drivers/pci/pci-driver.c b/drivers/pci/pci-driver.c index d76c4c8..f99bc7f 100644 --- a/drivers/pci/pci-driver.c +++ b/drivers/pci/pci-driver.c @@ -508,7 +508,7 @@ static int pci_restore_standard_config(struct pci_dev *pci_dev) return error; } - return pci_dev->state_saved ? pci_restore_state(pci_dev) : 0; + return pci_restore_state(pci_dev); } static void pci_pm_default_resume_noirq(struct pci_dev *pci_dev) diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index dbd0f94..7b70312 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -846,6 +846,8 @@ pci_restore_state(struct pci_dev *dev) int i; u32 val; + if (!dev->state_saved) + return 0; /* PCI Express register must be restored first */ pci_restore_pcie_state(dev);