[Skiboot] [PATCH 4/6] hw/npu2, platform: Add NPU2 platform device detection callback

Andrew Donnellan andrew.donnellan at au1.ibm.com
Tue Aug 21 17:14:03 AEST 2018

On 21/08/18 16:48, Alistair Popple wrote:
>> Move the existing I2C-based presence detection for OpenCAPI devices on
>> Zaius/ZZ into common code, which we use by default for platforms which do
>> not define a callback. Clean up the use of the ibm,npu-link-type property,
>> which will now be exposed solely for debugging and not consumed internally.
> <snip>
>> +/*
>> + * A default presence detection implementation for platforms like ZZ and Zaius
>> + * that don't provide their own. Assumes all devices found will be OpenCAPI.
>> + */
>> +static void i2c_presence_detect(struct npu2 *npu)
>> +{
>> +	struct npu2_dev *dev;
>> +	for (int i = 0; i < npu->total_devices; i++) {
>> +		dev = &npu->devices[i];
>> +		if (platform.ocapi->force_presence ||
>> +		    _i2c_presence_detect(dev))
>> +			dev->type = NPU2_DEV_TYPE_OPENCAPI;
>> +		else
>> +			dev->type = NPU2_DEV_TYPE_UNKNOWN;
> What are the chances of i2c detection working on unknown platforms? We should
> really only default to something if there is a reasonable expectation that it
> will work correctly. If not we should default to setting everything to
> NPU2_DEV_TYPE_UNKNOWN and have the ZZ and Zaius platforms set
> i2c_presence_detect() as their npu2_device_detect callback.

If it's an unknown platform it won't have platform.ocapi defined.

...aaaaand we don't null-check that in this path even though we 
dereference it. Will fix.

I see your point and maybe I'll export it in npu2.h so we can reference 
it as a platform callback.

Andrew Donnellan              OzLabs, ADL Canberra
andrew.donnellan at au1.ibm.com  IBM Australia Limited

More information about the Skiboot mailing list