arm64/for-kernelci build: 2 builds: 1 failed, 1 passed (v6.1-rc5-63-g9500fc6e9e60)

Suzuki K Poulose suzuki.poulose at arm.com
Thu Nov 17 03:56:47 PST 2022


On 16/11/2022 15:17, Besar Wicaksono wrote:
> Hi Suzuki,
> 
>> -----Original Message-----
>> From: Suzuki K Poulose <suzuki.poulose at arm.com>
>> Sent: Wednesday, November 16, 2022 7:26 AM
>> To: Will Deacon <will at kernel.org>; kernelci.org bot <bot at kernelci.org>;
>> Besar Wicaksono <bwicaksono at nvidia.com>
>> Cc: catalin.marinas at arm.com; linux-arm-kernel at lists.infradead.org; kernel-
>> build-reports at lists.linaro.org; kernelci-results at groups.io
>> Subject: Re: arm64/for-kernelci build: 2 builds: 1 failed, 1 passed (v6.1-rc5-63-
>> g9500fc6e9e60)
>>
>> External email: Use caution opening links or attachments
>>
>>
>> On 16/11/2022 12:20, Will Deacon wrote:
>>> Besar, Suzuki,
>>>
>>> On Tue, Nov 15, 2022 at 05:49:06PM -0800, kernelci.org bot wrote:
>>>> arm64/for-kernelci build: 2 builds: 1 failed, 1 passed (v6.1-rc5-63-
>> g9500fc6e9e60)
>>>>
>>>> Full Build Summary: https://kernelci.org/build/arm64/branch/for-
>> kernelci/kernel/v6.1-rc5-63-g9500fc6e9e60/
>>>>
>>>> Tree: arm64
>>>> Branch: for-kernelci
>>>> Git Describe: v6.1-rc5-63-g9500fc6e9e60
>>>> Git Commit: 9500fc6e9e6077616c0dea0f7eb33138be94ed0c
>>>> Git URL: https://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git
>>>> Built: 1 unique architecture
>>>>
>>>> Build Failure Detected:
>>>>
>>>> arm64:
>>>>       allmodconfig: (gcc-10) FAIL
>>>
>>> This is caused by the new arm_cspmu modules:
>>>
>>>     | depmod: ERROR: Cycle detected: arm_cspmu -> nvidia_cspmu ->
>> arm_cspmu
>>>     | depmod: ERROR: Found 2 modules in dependency cycles!
>>>
>>> Please can you send patches to fix this and the other build issue reported
>>> by Stephen Rothwell?
>>
>> Sigh ! Apologies, I didn't spot this. A proper fix is too invasive, with
>> addition of a provision for individual backend drivers to register an
>> "impl_match" with generic arm_cspmu driver.
>>
>> Until we get this, we could fold the nvidia_cspmu driver into the
>> arm_csmpu module. Something like :
>>
>>
>> diff --git a/drivers/perf/arm_cspmu/Makefile
>> b/drivers/perf/arm_cspmu/Makefile
>> index 641db85c018b..169bc64334d4 100644
>> --- a/drivers/perf/arm_cspmu/Makefile
>> +++ b/drivers/perf/arm_cspmu/Makefile
>> @@ -2,6 +2,5 @@
>>    #
>>    # SPDX-License-Identifier: GPL-2.0
>>
>> -obj-$(CONFIG_ARM_CORESIGHT_PMU_ARCH_SYSTEM_PMU) += \
>> -       arm_cspmu.o \
>> -       nvidia_cspmu.o
>> +obj-$(CONFIG_ARM_CORESIGHT_PMU_ARCH_SYSTEM_PMU) +=
>> arm_cspmu_core.o
>> +arm_cspmu_core-y       := arm_cspmu.o nvidia_cspmu.o
>>
>>
>> Besar,
>>
>> Please could you add a separate patch (for fixing it in later versions)
>> as mentioned above ?
>>
>>
>> Thoughts ?
> 
> Sorry I did not check this. The arm_cspmu code is intended to have the functions
> to operate the PMU and the vendor code (currently just Nvidia) is an extension that have
> just the attributes. So, I think there is only one module to be built here and folding both
> arm_cspmu and nvidia_cspmu together is the proper fix.

The proper fix would be to add a book keeping at arm_cspmu driver
for {un,}registering backends (like the current nvidia drivers) at
runtime (see arm_pmu for e.g.,).

So that the arm_cspmu module doesn't depend on the symbols from
backend drivers (in the impl_match list). That way the kernel can
be configured to keep things modular, rather than folding all
the possible (future) Arm Coresight PMU compliant drivers
ending up as a single module.

Suzuki




More information about the linux-arm-kernel mailing list