All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jesse Barnes <jbarnes@virtuousgeek.org>
To: Matthew Garrett <mjg@redhat.com>
Cc: linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] pci: Don't enable aspm before drivers have had a chance to veto it
Date: Fri, 18 Jun 2010 10:15:24 -0700	[thread overview]
Message-ID: <20100618101524.10a4a9fb@virtuousgeek.org> (raw)
In-Reply-To: <1276113907-22432-1-git-send-email-mjg@redhat.com>

On Wed,  9 Jun 2010 16:05:07 -0400
Matthew Garrett <mjg@redhat.com> wrote:

> The aspm code will currently set the configured aspm policy before drivers
> have had an opportunity to indicate that their hardware doesn't support it.
> Unfortunately, putting some hardware in L0 or L1 can result in the hardware
> no longer responding to any requests, even after aspm is disabled. It makes
> more sense to leave aspm policy at the BIOS defaults at initial setup time,
> reconfiguring it after pci_enable_device() is called. This allows the
> driver to blacklist individual devices beforehand.
> 
> Signed-off-by: Matthew Garrett <mjg@redhat.com>
> ---
> 
> Cleaned up slightly to remove the hacky aspm_policy changing.
> 
>  drivers/pci/pcie/aspm.c |   16 ++++++++++++++--
>  1 files changed, 14 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/pci/pcie/aspm.c b/drivers/pci/pcie/aspm.c
> index be53d98..7122281 100644
> --- a/drivers/pci/pcie/aspm.c
> +++ b/drivers/pci/pcie/aspm.c
> @@ -588,11 +588,23 @@ void pcie_aspm_init_link_state(struct pci_dev *pdev)
>  	 * update through pcie_aspm_cap_init().
>  	 */
>  	pcie_aspm_cap_init(link, blacklist);
> -	pcie_config_aspm_path(link);
>  
>  	/* Setup initial Clock PM state */
>  	pcie_clkpm_cap_init(link, blacklist);
> -	pcie_set_clkpm(link, policy_to_clkpm_state(link));
> +
> +	/*
> +	 * At this stage drivers haven't had an opportunity to change the
> +	 * link policy setting. Enabling ASPM on broken hardware can cripple
> +	 * it even before the driver has had a chance to disable ASPM, so
> +	 * default to a safe level right now. If we're enabling ASPM beyond
> +	 * the BIOS's expectation, we'll do so once pci_enable_device() is
> +	 * called.
> +	 */
> +	if (aspm_policy != POLICY_POWERSAVE) {
> +		pcie_config_aspm_path(link);
> +		pcie_set_clkpm(link, policy_to_clkpm_state(link));
> +	}
> +
>  unlock:
>  	mutex_unlock(&aspm_lock);
>  out:

Applied to linux-next, thanks.

-- 
Jesse Barnes, Intel Open Source Technology Center

      parent reply	other threads:[~2010-06-18 17:17 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-06-09 20:05 [PATCH] pci: Don't enable aspm before drivers have had a chance to veto it Matthew Garrett
2010-06-10  2:05 ` Kenji Kaneshige
2010-06-15 15:11 ` Tomas Henzl
2010-06-15 15:18   ` Matthew Garrett
2010-06-15 15:29     ` Tomas Henzl
2010-06-15 15:32       ` Matthew Garrett
2010-06-18 12:06 ` Maxim Levitsky
2010-06-18 16:12   ` Jesse Barnes
2010-06-18 17:05     ` Maxim Levitsky
2010-06-18 17:08       ` Jesse Barnes
2010-06-18 17:15       ` Jesse Barnes
2010-06-18 17:44         ` Maxim Levitsky
2010-06-18 17:15 ` Jesse Barnes [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20100618101524.10a4a9fb@virtuousgeek.org \
    --to=jbarnes@virtuousgeek.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=mjg@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.