lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
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

Powered by Openwall GNU/*/Linux Powered by OpenVZ