Skip to content

Latest commit

 

History

History
81 lines (63 loc) · 5.92 KB

AGENTS.md

File metadata and controls

81 lines (63 loc) · 5.92 KB

Repository Guidelines

Project Structure & Module Organization

本仓库是 Uke(Xiaomi Pad 7,SM7675)个人主线 Linux 移植工作区。linux/ 固定在上游 v6.12 标签对应的 commit;vendor/ 是 Xiaomi 公开的 Uke/Cliffs Android 内核、设备树 与模块源码;lineage/ 是额外的 SM8635/Cliffs 参考源码。manifest/ 仅保留为历史来源 参考,当前固定提交是 2021 年 Android 11 manifest,不能作为 Uke 的构建输入或当前平台 事实来源。

artifacts/ 仅跟踪可审阅的派生资料:boot/、device-tree/ 和 modules/。原始线刷包、 镜像解包、二进制 DTB、ramdisk、专有模块及实机完整采集都在被忽略的 uke_images_*/ 或 artifacts/raw/ 下。docs/ 记录项目状态、证据边界和路线图; scripts/ 只包含主机侧只读采集/分析脚本。

Build, Test, and Development Commands

在相应子模块内运行内核命令,并将输出放在子模块外或其被忽略的输出目录:

make -C linux O="$PWD/out/upstream-arm64" ARCH=arm64 defconfig
make -C linux O="$PWD/out/upstream-arm64" ARCH=arm64 -j"$(nproc)"
./linux/scripts/checkpatch.pl -f path/to/change.c

Android/Xiaomi 过渡内核必须使用其发布树要求的 Android 构建环境与 toolchain;不要把主机 原生构建结果当作可启动镜像。先运行最小受影响配置和可用的 KUnit,再做适用的 ARM64 构建。

Coding Style, Testing, and Commits

遵循 Linux 内核风格:tab 缩进、snake_case、窄范围改动,以及相应子系统的 Kconfig/Makefile 约定。能脱离硬件验证的逻辑应增加或更新 KUnit。提交使用简洁的子系统前缀主题;提交说明应 交代问题、修复、来源、配置和实际验证命令。上游 Android common-kernel 兼容补丁按需要使用 UPSTREAM:、BACKPORT:、FROMGIT:、FROMLIST: 或 ANDROID:,并带必要的 Signed-off-by:、Change-Id:、Fixes:/Bug: 标签。

本项目不以 Linux 上游化为目标,而是将 Uke 适配到上游 v6.12 内核并尽快稳定运行。 vendor/ 的公开 Uke/Cliffs 代码,以及 lineage/ 中以 Uke 设备标识为准、已验证可用的 实现,都是可直接参考和移植的来源;SoC 或型号命名不完全一致不能单独否定其参考价值。实现时以 Uke 的实际设备树、硬件资源和实机行为为准:优先移植这些已验证实现,仅处理 v6.12 API、构建、 Kconfig 和设备树所必需的适配。允许使用 Uke 专用 compatible、设备树覆盖和窄范围兼容层;不要 为了抽象性、通用性或上游审美进行非必要重构。阶段验收以可启动、可观测日志和逐项拉起硬件为准。

Uke 驱动与设备树边界

linux/ 必须保持固定上游 v6.12 的干净工作树;不得在其中新增、修改或删除源码、Kconfig、 Makefile、头文件或设备树 binding。对上游已有驱动,先审计其 binding,并优先只通过本仓库的 DTBO 将 Uke Android 设备树适配到该 binding。

对需要内核子系统私有 API、设备树 provider 注册或启动早期初始化的 Uke SoC 驱动(如 GCC、 RPMh、GDSC、TLMM、NoC、PHY),将补丁作为本仓库 patches/uke/ 中的可审阅序列维护。构建前, 仅在被忽略的 build/linux-uke/ worktree 从干净的 linux/ 创建派生树并应用该序列;绝不在 linux/ 本体应用补丁。只有同时满足以下条件的驱动才放在 uke-drivers/ 作为 out-of-tree 模块:它是可在 initramfs 中延后加载的独立板级外设;只使用上游已导出的 API;不注册 SoC 时钟、电源域、pinctrl、interconnect 等资源 provider,也不需要启动早期初始化。WCD939x USB 路由驱动通常属于这一类;在功能首验阶段,可临时放入 patches/uke/ 作为内置驱动, 以消除模块装载变量,验证通过后再评估是否移回外置模块。此规则用于让基础内核只保留必要的通用能力,避免为了单一板级外设扩大 内核镜像或引入不必要的内核内端口。任何补丁和 DTBO 都必须可从干净 v6.12 重现。

除非用户在当前请求中明确要求创建提交,否则 Agent 对 Git 历史的唯一写入权限是使用 git add 暂存已完成、经过验证且与当前请求相关的文件;不得执行 git commit(包括 --amend)或替用户创建提交。暂存后应报告建议的提交主题、验证结果和剩余工作,由用户 自行审阅并决定是否提交。

Firmware and Device Safety

设备安全的核心边界是始终保留可用的 fastboot 恢复路径。Agent 默认只做离线分析和本地产物 生成,不执行 flash、erase、分区、切槽、解锁/上锁、重启、sideload、push 或其他会改变设备状态 的操作;任何人工测试和设备写入步骤都必须先由用户审阅并自行执行。

不得修改 GPT/rawprogram/patch、早期启动链(xbl*、abl*、uefi*)或安全/无线固件 (tz*、hyp*、aop*、NON-HLOS.bin、DSP、Bluetooth),不得使用 flash_all* 或任何 wipe-partition 方案。boot、init_boot、vendor_boot、dtbo、Android OS 载荷和已清除的 用户数据可作为实验范围,前提是每个拟变更分区都有同版本、已校验的 stock 恢复镜像,设备仍可 进入 fastboot,且不损害上述禁止区域或恢复能力。每次实验前记录候选产物与对应 stock 镜像的 SHA-256、目标 slot 和明确的恢复命令;始终保留至少一个已验证的恢复方案。

项目目标是个人实验,不是向 Linux 上游投稿。实现材料只能来自合法公开的开源代码;保留许可证 并使项目新增代码开源。原厂二进制仅可作为兼容性证据或在许可证和 ABI 均允许时原样使用,须记录 来源和哈希,绝不宣称为本项目代码;不得逆向、反汇编、反编译或修改闭源程序/驱动,也不得公开 校准数据、设备标识或安全材料。