Arm64 double PCI ECAM reservations in acpi_resource_consumer()

Qian Cai quic_qiancai at quicinc.com
Thu Jun 3 08:44:45 PDT 2021



On 6/3/2021 10:16 AM, Lorenzo Pieralisi wrote:
> This is not the "reservation". AFAICS acpi_resource_consumer() checks
> whether the ECAM region is part of _a_ given ACPI device _CRS in the
> namespace, it does not "reserve" anything.
> 
> IIUC the issue here is that we request the ECAM region in
> pci_ecam_create() and later the code in:

Okay, I was confused by the code. I thought once acpi_resource_consumer() returned something, it is "reserved".

	adev = acpi_resource_consumer(&cfgres);
	if (adev)
		dev_info(dev, "ECAM area %pR reserved by %s\n", &cfgres,
			 dev_name(&adev->dev));
	else
		dev_warn(dev, FW_BUG "ECAM area %pR not reserved in ACPI namespace\n",
			 &cfgres);

> 
> drivers/pnp/system.c
> 
> tries to request the ECAM region (that lives in the PNP0C02 _CRS) and
> fails (see reserve_range() and request_mem_region()).
> 
> As the comment in reserve_range() goes, this is harmless, not sure
> whether there is anything to do about it.

Actually, the comment said it is "usually harmless", so it is a tricky for an average Joe to figure out if one case falls into the "usual" bracket or not at the first place.



More information about the linux-arm-kernel mailing list