All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>
To: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
Cc: "Rafael J. Wysocki" <rjw@sisk.pl>,
	Jesse Barnes <jbarnes@virtuousgeek.org>,
	Len Brown <lenb@kernel.org>,
	ACPI Devel Maling List <linux-acpi@vger.kernel.org>,
	linux-pm@lists.linux-foundation.org, linux-pci@vger.kernel.org,
	Matthew Garrett <mjg59@srcf.ucam.org>
Subject: Re: [PATCH 4/6] ACPI/PCI: ask bios for control of all native services at once
Date: Fri, 30 Jul 2010 17:42:46 +0900	[thread overview]
Message-ID: <4C529086.9090600@jp.fujitsu.com> (raw)
In-Reply-To: <4C526FDC.6050800@jp.fujitsu.com>

Hi,

I have a concern.

(2010/07/30 15:23), Kenji Kaneshige wrote:
(snip)
> +/**
> + * pcie_port_acpi_setup - Request the BIOS to release control of PCIe services.
> + * @port: PCIe Port service for a root port or event collector.
> + * @srv_mask: Bit mask of services that can be enabled for @port.
> + *
> + * Invoked when @port is identified as a PCIe port device.  To avoid conflicts
> + * with the BIOS PCIe port native services support requires the BIOS to yield
> + * control of these services to the kernel.  The mask of services that the BIOS
> + * allows to be enabled for @port is written to @srv_mask.
> + *
> + * NOTE: It turns out that we cannot do that for individual port services
> + * separately, because that would make some systems work incorrectly.
> + */
> +int pcie_port_acpi_setup(struct pci_dev *port, int *srv_mask)
> +{
> +	acpi_status status;
> +	acpi_handle handle;
> +	u32 flags, request;
> +
> +	if (acpi_pci_disabled)
> +		return 0;
> +
> +	handle = acpi_find_root_bridge_handle(port);
> +	if (!handle)
> +		return -EINVAL;
> +
> +	request = (OSC_PCI_EXPRESS_CAP_STRUCTURE_CONTROL |
> +		   OSC_PCI_EXPRESS_NATIVE_HP_CONTROL |
> +		   OSC_PCI_EXPRESS_PME_CONTROL |
> +		   OSC_PCI_EXPRESS_AER_CONTROL);
> +
> +	if (pcie_aer_get_firmware_first(port)) {
> +		dev_dbg(&port->dev, "PCIe errors handled by BIOS.\n");
> +		request &= ~OSC_PCI_EXPRESS_AER_CONTROL;
> +	}

We should drop OSC_PCI_EXPRESS_AER_CONTROL from request when AER is not
configured, and also when AER is disabled for some reason (e.g. pci=noaer).
Otherwise no one own AER errors, it will mean that unhandled error might
cause unexpected system behavior.

> +
> +	status = acpi_pci_osc_control_query(handle, request, &flags);
> +	if (ACPI_FAILURE(status)) {
> +		dev_dbg(&port->dev, "ACPI _OSC query failed (code %d)\n",
> +			status);
> +		return -ENODEV;
> +	}
> +
> +	if (!(flags & OSC_PCI_EXPRESS_CAP_STRUCTURE_CONTROL)) {
> +		dev_dbg(&port->dev, "BIOS refuses to grant control of PCIe "
> +			"Capability Structure\n");
> +		return -EACCES;
> +	}
> +
> +	request &= flags;
> +	*srv_mask = PCIE_PORT_SERVICE_VC;
> +	if (request & OSC_PCI_EXPRESS_NATIVE_HP_CONTROL)
> +		*srv_mask |= PCIE_PORT_SERVICE_HP;
> +	if (request & OSC_PCI_EXPRESS_PME_CONTROL)
> +		*srv_mask |= PCIE_PORT_SERVICE_PME;
> +	if (request & OSC_PCI_EXPRESS_AER_CONTROL)
> +		*srv_mask |= PCIE_PORT_SERVICE_AER;
> +
> +	status = acpi_pci_osc_control_set(handle, request);
> +	if (ACPI_FAILURE(status)) {
> +		dev_dbg(&port->dev, "ACPI _OSC request failed (code %d)\n",
> +			status);
> +		return -ENODEV;
> +	}
> +
> +	dev_info(&port->dev, "ACPI _OSC control granted for 0x%02x\n", request);
> +
> +	return 0;
> +}

I'll post a fix for this soon.


Thanks,
H.Seto

  parent reply	other threads:[~2010-07-30  8:42 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-07-28 21:23 [PATCH] PCI / PCIe: Ask BIOS for control of all native services at once (v4) Rafael J. Wysocki
2010-07-28 21:43 ` Jesse Barnes
2010-07-29  5:03   ` Kenji Kaneshige
2010-07-29 15:45     ` Rafael J. Wysocki
2010-07-29 15:45     ` Rafael J. Wysocki
2010-07-30  6:00       ` Kenji Kaneshige
2010-07-30  6:00       ` Kenji Kaneshige
2010-07-30  6:16         ` Kenji Kaneshige
2010-07-30  6:20           ` [PATCH 1/6] ACPI/PCI: cleanup acpi_pci_run_osc Kenji Kaneshige
2010-07-30  6:20           ` Kenji Kaneshige
2010-07-30 12:15             ` Rafael J. Wysocki
2010-07-30 12:15             ` Rafael J. Wysocki
2010-07-30  6:21           ` [PATCH 2/6] ACPI/PCI: do not preserve query result Kenji Kaneshige
2010-07-30 12:42             ` Rafael J. Wysocki
2010-07-30 12:42             ` Rafael J. Wysocki
2010-07-30  6:21           ` Kenji Kaneshige
2010-07-30  6:22           ` [PATCH 3/6] ACPI/PCI: optimize checks in acpi_pci_osc_control_set() Kenji Kaneshige
2010-07-30 12:42             ` Rafael J. Wysocki
2010-07-30 12:42             ` Rafael J. Wysocki
2010-07-30  6:22           ` Kenji Kaneshige
2010-07-30  6:23           ` [PATCH 4/6] ACPI/PCI: ask bios for control of all native services at once Kenji Kaneshige
2010-07-30  8:42             ` Hidetoshi Seto
2010-07-30  8:42             ` Hidetoshi Seto [this message]
2010-07-30  8:47               ` [PATCH] portdrv: Don't take control of AER if not required Hidetoshi Seto
2010-07-30  8:47               ` Hidetoshi Seto
2010-07-30 12:46             ` [PATCH 4/6] ACPI/PCI: ask bios for control of all native services at once Rafael J. Wysocki
2010-07-30 12:46             ` Rafael J. Wysocki
2010-07-30  6:23           ` Kenji Kaneshige
2010-07-30  6:24           ` [PATCH 5/6] PCI: portdrv: disable native hot-plug interrupt Kenji Kaneshige
2010-07-30  6:24           ` Kenji Kaneshige
2010-07-30  6:25           ` [PATCH 6/6] PCI: portdrv: remove module_exit Kenji Kaneshige
2010-07-30  6:25           ` Kenji Kaneshige
2010-07-30  6:16         ` [PATCH] PCI / PCIe: Ask BIOS for control of all native services at once (v4) Kenji Kaneshige
2010-07-30 11:50         ` Rafael J. Wysocki
2010-07-30 11:50         ` Rafael J. Wysocki
2010-07-29  5:03   ` Kenji Kaneshige
2010-07-28 21:43 ` Jesse Barnes

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=4C529086.9090600@jp.fujitsu.com \
    --to=seto.hidetoshi@jp.fujitsu.com \
    --cc=jbarnes@virtuousgeek.org \
    --cc=kaneshige.kenji@jp.fujitsu.com \
    --cc=lenb@kernel.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=linux-pm@lists.linux-foundation.org \
    --cc=mjg59@srcf.ucam.org \
    --cc=rjw@sisk.pl \
    /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.