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]
Message-ID: <02473860-3fee-00f5-1c86-1242c0bf42e8@amd.com>
Date: Mon, 20 Jan 2025 15:44:43 +0000
From: Alejandro Lucero Palau <alucerop@....com>
To: Dan Williams <dan.j.williams@...el.com>, alejandro.lucero-palau@....com,
 linux-cxl@...r.kernel.org, netdev@...r.kernel.org, edward.cree@....com,
 davem@...emloft.net, kuba@...nel.org, pabeni@...hat.com,
 edumazet@...gle.com, dave.jiang@...el.com
Subject: Re: [PATCH v9 07/27] sfc: use cxl api for regs setup and checking


On 1/18/25 01:53, Dan Williams wrote:
> alejandro.lucero-palau@ wrote:
>> From: Alejandro Lucero <alucerop@....com>
>>
>> Use cxl code for registers discovery and mapping.
>>
>> Validate capabilities found based on those registers against expected
>> capabilities.
>>
>> Signed-off-by: Alejandro Lucero <alucerop@....com>
>> Reviewed-by: Martin Habets <habetsm.xilinx@...il.com>
>> Reviewed-by: Zhi Wang <zhi@...dia.com>
>> Acked-by: Edward Cree <ecree.xilinx@...il.com>
>> ---
>>   drivers/net/ethernet/sfc/efx_cxl.c | 21 +++++++++++++++++++++
>>   1 file changed, 21 insertions(+)
>>
>> diff --git a/drivers/net/ethernet/sfc/efx_cxl.c b/drivers/net/ethernet/sfc/efx_cxl.c
>> index 12c9d50cbb26..29368d010adc 100644
>> --- a/drivers/net/ethernet/sfc/efx_cxl.c
>> +++ b/drivers/net/ethernet/sfc/efx_cxl.c
>> @@ -22,6 +22,8 @@ int efx_cxl_init(struct efx_probe_data *probe_data)
>>   {
>>   	struct efx_nic *efx = &probe_data->efx;
>>   	struct pci_dev *pci_dev = efx->pci_dev;
>> +	DECLARE_BITMAP(expected, CXL_MAX_CAPS);
>> +	DECLARE_BITMAP(found, CXL_MAX_CAPS);
>>   	struct efx_cxl *cxl;
>>   	struct resource res;
>>   	u16 dvsec;
>> @@ -64,6 +66,25 @@ int efx_cxl_init(struct efx_probe_data *probe_data)
>>   		goto err_resource_set;
>>   	}
>>   
>> +	rc = cxl_pci_accel_setup_regs(pci_dev, cxl->cxlds);
>> +	if (rc) {
>> +		pci_err(pci_dev, "CXL accel setup regs failed");
>> +		goto err_resource_set;
>> +	}
>> +
>> +	bitmap_clear(expected, 0, CXL_MAX_CAPS);
>> +	set_bit(CXL_DEV_CAP_HDM, expected);
>> +	set_bit(CXL_DEV_CAP_HDM, expected);
>> +	set_bit(CXL_DEV_CAP_RAS, expected);
>> +
>> +	if (!cxl_pci_check_caps(cxl->cxlds, expected, found)) {
>> +		pci_err(pci_dev,
>> +			"CXL device capabilities found(%pb) not as expected(%pb)",
>> +			found, expected);
>> +		rc = -EIO;
>> +		goto err_resource_set;
>> +	}
>> +
> Walk the existing valid bits in the reg maps. If you want to do this
> with bitmaps you can convert reg_map valid bits into a bitmap locally,
> but that redundant infrastructure can be left out of the core.


This is the accel driver. Some way for doing this needs to be 
implemented, and although I'm not against solving the duplication 
between the reg_map valid bit and the new capability bitmap, an accel 
driver will need this piece of code or something equivalent.


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ