[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#638863: linux-image-3.0.0-1-amd64: Errors/warnings show during startup



Hi Ralf,

Ralf Jung wrote:

> Each time I start up my laptop, the following errors (warnings?) appear:
>
> [    5.083819] shpchp 0000:00:01.0: Cannot reserve MMIO region
> [    5.447322] SP5100 TCO timer: mmio address 0xfec000f0 already in use
>
> The system is working fine as far as I can tell. However, either these messages
> are uncritical and should not be shown, or they are a problem that has to be
> fixed.
> I observed the first messages for quite a while already, even back when I still
> used Kubuntu with the kernel version 2.6.38, then with 2.6.39 on Debian
> testing, and now with 3.0.

Let's deal with the first one.  It seems like a real problem because
it distracts people debugging other problems.  The second should be
filed as a separate bug if you are interested in working on it.

The relevant code is in drivers/pci/hotplug/shpchp_hpc.c:

	if (!request_mem_region(ctrl->mmio_base, ctrl->mmio_size, MY_NAME)) {
		ctrl_err(ctrl, "Cannot reserve MMIO region\n");
		rc = -1;
		goto abort;
	}

This comes after a message like

	shpchp 0000:00:01.0: HPC vendor_id 1022 device_id 9602 ss_vid 1022 ss_did 9602

which means that a hotplug controller was detected.  Looking at "lspci -nn"
output, I can see that this device is

	00:01.0 PCI bridge: Advanced Micro Devices [AMD] RS780/RS880 PCI to PCI bridge (int gfx)

So the problem would seem to be that Linux thinks this PCI-PCI bridge
supports the standard hotplug controller interface (because it assumes
_anything_ with AMD's vendor id does), when it doesn't.

	static int is_shpc_capable(struct pci_dev *dev)
	{
		if ((dev->vendor == PCI_VENDOR_ID_AMD) || (dev->device ==
							PCI_DEVICE_ID_AMD_GOLAM_7450))
			return 1;
		if (!pci_find_capability(dev, PCI_CAP_ID_SHPC))
			return 0;
		if (get_hp_hw_control_from_firmware(dev))
			return 0;
		return 1;
	}

The test has been that way ever since v2.6.15-rc1~731^2~22^2~13
(shpchp: detect SHPC capability before doing a lot of work,
2006-10-13).  The false positive (if it actually is a false positive)
is clearly harmless.  If someone wants to remove the "if (dev->vendor
== PCI_VENDOR_ID_AMD)" exception, it would be necessary to research
why it is there in the first place (are there AMD hotplug controllers
that do not advertise the shpc capability for which that exception is
needed?) and if so, what a more precise exception to solve the same
problem would be.

If interested, please take this upstream (that means the
linux-pci@vger.kernel.org list) and let us know the message-ID.
Otherwise I will probably mark this bug as wontfix or close it, since
without someone doing the research just mentioned, it seems expensive
to fix, without much benefit.

Hope that helps.
Jonathan



Reply to: