[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <3af40110-98c6-41e2-bd19-29a999f3bdcf@amd.com>
Date: Wed, 5 Jun 2024 14:34:04 -0500
From: Wei Huang <wei.huang2@....com>
To: Simon Horman <horms@...nel.org>
Cc: linux-pci@...r.kernel.org, linux-kernel@...r.kernel.org,
linux-doc@...r.kernel.org, netdev@...r.kernel.org, bhelgaas@...gle.com,
corbet@....net, davem@...emloft.net, edumazet@...gle.com, kuba@...nel.org,
pabeni@...hat.com, alex.williamson@...hat.com, gospo@...adcom.com,
michael.chan@...adcom.com, ajit.khaparde@...adcom.com,
somnath.kotur@...adcom.com, andrew.gospodarek@...adcom.com,
manoj.panicker2@....com, Eric.VanTassell@....com, vadim.fedorenko@...ux.dev,
bagasdotme@...il.com
Subject: Re: [PATCH V2 6/9] PCI/TPH: Retrieve steering tag from ACPI _DSM
On 6/4/24 10:30, Simon Horman wrote:
> On Fri, May 31, 2024 at 04:38:38PM -0500, Wei Huang wrote:
>> According to PCI SIG ECN, calling the _DSM firmware method for a given
>> CPU_UID returns the steering tags for different types of memory
>> (volatile, non-volatile). These tags are supposed to be used in ST
>> table entry for optimal results.
>>
>> Co-developed-by: Eric Van Tassell <Eric.VanTassell@....com>
>> Signed-off-by: Eric Van Tassell <Eric.VanTassell@....com>
>> Signed-off-by: Wei Huang <wei.huang2@....com>
>> Reviewed-by: Ajit Khaparde <ajit.khaparde@...adcom.com>
>> Reviewed-by: Somnath Kotur <somnath.kotur@...adcom.com>
>> Reviewed-by: Andy Gospodarek <andrew.gospodarek@...adcom.com>
>
> ...
>
>> diff --git a/drivers/pci/pcie/tph.c b/drivers/pci/pcie/tph.c
>
> ...
>
>> +static bool invoke_dsm(acpi_handle handle, u32 cpu_uid, u8 ph,
>> + u8 target_type, bool cache_ref_valid,
>> + u64 cache_ref, union st_info *st_out)
>> +{
>> + union acpi_object in_obj, in_buf[3], *out_obj;
>> +
>> + in_buf[0].integer.type = ACPI_TYPE_INTEGER;
>> + in_buf[0].integer.value = 0; /* 0 => processor cache steering tags */
>> +
>> + in_buf[1].integer.type = ACPI_TYPE_INTEGER;
>> + in_buf[1].integer.value = cpu_uid;
>> +
>> + in_buf[2].integer.type = ACPI_TYPE_INTEGER;
>> + in_buf[2].integer.value = ph & 3;
>> + in_buf[2].integer.value |= (target_type & 1) << 2;
>> + in_buf[2].integer.value |= (cache_ref_valid & 1) << 3;
>> + in_buf[2].integer.value |= (cache_ref << 32);
>> +
>> + in_obj.type = ACPI_TYPE_PACKAGE;
>> + in_obj.package.count = ARRAY_SIZE(in_buf);
>> + in_obj.package.elements = in_buf;
>> +
>> + out_obj = acpi_evaluate_dsm(handle, &pci_acpi_dsm_guid, MIN_ST_DSM_REV,
>> + ST_DSM_FUNC_INDEX, &in_obj);
>
> Hi Wei Huang, Eric, all,
>
> This seems to break builds on ARM (32bit) with multi_v7_defconfig.
>
> .../tph.c:221:39: error: use of undeclared identifier 'pci_acpi_dsm_guid'
> 221 | out_obj = acpi_evaluate_dsm(handle, &pci_acpi_dsm_guid, MIN_ST_DSM_REV,
> |
Thanks for pointing it out. I will add "depends on ACPI" in Kconfig
which solves the problem:
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnu- multi_v7_defconfig zImage
modules
CALL scripts/checksyscalls.sh
Kernel: arch/arm/boot/Image is ready
Kernel: arch/arm/boot/zImage is ready
>
> I suspect a dependency on ACPI in Kconfig is appropriate.
>
>> +
>> + if (!out_obj)
>> + return false;
>> +
>> + if (out_obj->type != ACPI_TYPE_BUFFER) {
>> + pr_err("invalid return type %d from TPH _DSM\n",
>> + out_obj->type);
>> + ACPI_FREE(out_obj);
>> + return false;
>> + }
>
> ...
Powered by blists - more mailing lists