[Deepin-Kernel-SIG] [linux 6.6-y] deepin: extra ci: add i386_defconfig#1623
Conversation
1. It seems our peers also check for build success under this configuration. 2. At this moment, the code in the deepin linux-6.6.y branch indeed fails to build under that branch. Signed-off-by: WangYuli <wangyl5933@chinaunicom.cn>
Reviewer's guide (collapsed on small PRs)Reviewer's GuideExtends the kernel extra CI workflow to build the i386_defconfig configuration (GCC and Clang) and fixes 32‑bit build issues in ACPI cpufreq and HDA Intel driver code uncovered by this configuration. Flow diagram for build-kernel-extra i386_defconfig jobsflowchart LR
Start["PR opened or updated"] --> Trigger["GitHub Actions triggers build-kernel-extra"]
Trigger --> Matrix["Job matrix expands configurations"]
Matrix -->|"x86_64_defconfig (existing)"| JobX86_64["Build job for x86_64_defconfig"]
Matrix -->|"i386_defconfig + GCC (new)"| JobGCCi386["Build job gcc_i386_defconfig"]
Matrix -->|"i386_defconfig + Clang (new)"| JobClangi386["Build job clang_i386_defconfig"]
subgraph gcc_i386_defconfig
JobGCCi386 --> CheckoutGCC["Checkout kernel source"]
CheckoutGCC --> ConfigGCC["Configure kernel: i386_defconfig"]
ConfigGCC --> BuildGCC["Build kernel with GCC"]
BuildGCC --> TestGCC["Run basic build checks"]
TestGCC --> ResultGCC["Upload logs and artifacts"]
end
subgraph clang_i386_defconfig
JobClangi386 --> CheckoutClang["Checkout kernel source"]
CheckoutClang --> ConfigClang["Configure kernel: i386_defconfig"]
ConfigClang --> BuildClang["Build kernel with Clang"]
BuildClang --> TestClang["Run basic build checks"]
TestClang --> ResultClang["Upload logs and artifacts"]
end
JobX86_64 --> Done["All jobs complete; report status on PR"]
ResultGCC --> Done
ResultClang --> Done
File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
There was a problem hiding this comment.
Pull request overview
Adds extra CI coverage to validate that the Deepin 6.6-y kernel tree builds under i386_defconfig, aligning with peer CI expectations and helping surface existing 32-bit build regressions earlier.
Changes:
- Add a GCC build step for
i386_defconfigin the “build kernel extra” workflow. - Add a Clang build step for
i386_defconfigin the same workflow.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| make i386_defconfig | ||
| make -j$(nproc) |
There was a problem hiding this comment.
This builds i386 and then later x86_64 (and other ARCH values) in the same source/output tree. Kbuild is not reliable when reusing the same output directory across different defconfigs/bitness/architectures; stale objects can lead to flaky failures or false passes. Use per-config out-of-tree build dirs (e.g., via O=/KBUILD_OUTPUT) or run a clean step (e.g., make mrproper) between architecture/bitness switches.
| make LLVM=-18 i386_defconfig | ||
| make LLVM=-18 -j$(nproc) |
There was a problem hiding this comment.
The clang i386 build reuses the artifacts from the preceding GCC i386 build in the same directory. Even if many objects rebuild, this can still mask clang-only build issues or cause confusing incremental-build behavior. Consider using a separate O= output dir for the clang pass (or cleaning before the clang build) so it is a true from-scratch clang build for this config.
The gf_init_pci() helper prints the DIU framebuffer base with "%llx"
while passing a phys_addr_t by value:
dev_info(chip->card->dev,
"gf_hda diu fb base=0x%llx, size=%dM.\n",
diu_fb_base, (unsigned int)(fb_size >> 20));
phys_addr_t is a build-option dependent type: on 32-bit x86 without
CONFIG_PHYS_ADDR_T_64BIT (e.g. i386_defconfig) it resolves to
'unsigned int', while "%llx" expects 'unsigned long long'. Building
with clang exposes the mismatch as a hard error due to -Wformat being
promoted to -Werror:
sound/pci/hda/hda_intel.c:426:72: error: format specifies type
'unsigned long long' but the argument has type 'phys_addr_t'
(aka 'unsigned int') [-Werror,-Wformat]
dev_info(chip->card->dev,
"gf_hda diu fb base=0x%llx, size=%dM.\n",
diu_fb_base, ...);
Switch to the kernel's dedicated "%pa" specifier, which exists
precisely for this case.
[Per Documentation/core-api/printk-formats.rst:]
%pa[p] 0x01234567 or 0x0123456789abcdef
For printing a phys_addr_t type (and its derivatives, such as
resource_size_t) which can vary based on build options, regardless
of the width of the CPU data path.
Passed by reference.
"%pa" is sizeof(phys_addr_t)-aware, emits the "0x" prefix itself and
works correctly on 32-bit, 32-bit+PAE and 64-bit configurations. The
literal "0x" prefix is therefore dropped, and diu_fb_base is passed
by reference as the specifier mandates.
Fixes: b7e8bf1 ("add gf hdaudio 001 patch in deepin kernel 6.6")
Signed-off-by: WangYuli <wangyl5933@chinaunicom.cn>
sched_itmt_work_fn(), the sched_itmt_work work_struct and the
sched_set_itmt() helper are defined unconditionally, but their only
caller, core_set_itmt_prio(), sits inside #ifdef CONFIG_ACPI_CPPC_LIB.
On configs where CONFIG_ACPI_CPPC_LIB is not set (e.g. i386_defconfig),
these helpers become unreferenced static functions:
drivers/cpufreq/acpi-cpufreq.c:638:13: error: unused function 'sched_set_itmt' [-Werror,-Wunused-function]
638 | static void sched_set_itmt(void)
| ^~~~~~~~~~~~~~
1 error generated.
make[4]: *** [scripts/Makefile.build:243: drivers/cpufreq/acpi-cpufreq.o] Error 1
Move the three helpers into the existing #ifdef CONFIG_ACPI_CPPC_LIB
block so their definitions and the sole call site share the same
compilation condition.
No functional change.
Fixes: 86dc6a6 ("cpufreq: ACPI: add ITMT support when CPPC enabled")
Signed-off-by: WangYuli <wangyl5933@chinaunicom.cn>
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: opsiff The full list of commands accepted by this bot can be found here. The pull request process is described here DetailsNeeds approval from an approver in each of these files:
Approvers can indicate their approval by writing |
It seems our peers also check for build success under this configuration.
At this moment, the code in the deepin linux-6.6.y branch indeed fails to build under that branch.
Summary by Sourcery
Extend extra kernel CI to cover i386_defconfig and fix related build issues.
Bug Fixes:
CI: