Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
97 changes: 58 additions & 39 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,13 @@
| 项目控制仓库 | [`Zhanfg/OnePlus13-kernel`](https://github.com/Zhanfg/OnePlus13-kernel) / `main` | 构建、补丁、AK3、测试、发布与文档 |
| 本仓库 | `Zhanfg/android_kernel_common_oneplus_sm8750` / `6.6-final` | common 层自定义补丁和开发历史 |
| 官方 manifest | [`OnePlusOSS/kernel_manifest`](https://github.com/OnePlusOSS/kernel_manifest) / `oneplus/sm8750` | 完整 OKI 工程入口,使用 `oneplus_13_b.xml` |
| 官方 common | [`OnePlusOSS/android_kernel_common_oneplus_sm8750`](https://github.com/OnePlusOSS/android_kernel_common_oneplus_sm8750) / `oneplus/sm8750_b_16.0.0_oneplus_13` | 本仓库的主要官方上游 |
| 官方 common | [`OnePlusOSS/android_kernel_common_oneplus_sm8750`](https://github.com/OnePlusOSS/android_kernel_common_oneplus_sm8750) / `oneplus/sm8750_b_16.0.0_oneplus_13` | common 官方上游 |
| 官方 msm-kernel | [`OnePlusOSS/android_kernel_oneplus_sm8750`](https://github.com/OnePlusOSS/android_kernel_oneplus_sm8750) | 平台内核与 OnePlus/OPlus 代码 |
| 官方 modules / DT | [`OnePlusOSS/android_kernel_modules_and_devicetree_oneplus_sm8750`](https://github.com/OnePlusOSS/android_kernel_modules_and_devicetree_oneplus_sm8750) | vendor modules 与设备树 |

完整工程还需要:
完整工程还需要 manifest 固定的 CodeLinaro、Kleaf/Bazel、工具链和其他依赖。

- `OnePlusOSS/android_kernel_oneplus_sm8750`
- `OnePlusOSS/android_kernel_modules_and_devicetree_oneplus_sm8750`
- manifest 固定的 CodeLinaro / Kleaf / Bazel / 工具链依赖

## 当前官方基线
## 当前基线与差异

最后核对:**2026-07-29**。

Expand All @@ -28,45 +26,69 @@
| 设备系统 | `PJZ110_16.0.9.401(CN01)` |
| Manifest | `OnePlusOSS/kernel_manifest:oneplus/sm8750` |
| Manifest 文件 | `oneplus_13_b.xml` |
| 官方 common 分支 | `oneplus/sm8750_b_16.0.0_oneplus_13` |
| 官方 common 提交 | `e1b346b6b4f4096eb342ae3684838a942fd6f6c4` |
| Android common tag | `android15-6.6-2026-01_r22` |
| 内核系列 | Android 15 / Linux 6.6 |
| 官方 common 版本 | Linux `6.6.118` / `android15-6.6-2026-01_r22` |
| 官方 msm-kernel 提交 | `6028f47faddaa27700f8dd3a1d83906ea8f27170` |
| 官方 modules / DT 提交 | `d50b305f7da9e14715a25120a4ac7b1a4b8b97c3` |
| 本地开发分支 | `6.6-final` |
| 本地 common 版本 | Linux `6.6.126` |
| 共同祖先 | `5a0ffb447c1dbd82e8e3af7a98c4a629f4b6d143` |
| 本地相对官方 | 领先 8,947 commits,落后 5 official commits |

这里存在两套不同含义的版本:

- **官方设备基线**:OnePlus 13 `16.0.9.401`,common Makefile 为 Linux 6.6.118。
- **本地 common 开发基线**:`6.6-final`,Makefile 已推进到 Linux 6.6.126,并包含大量自定义补丁。

上游提交会同步到只读跟踪分支:
因此不能通过整树覆盖把官方 6.6.118 直接写入本地 6.6.126,也不能把本次同步描述为普通内核版本升级。正确工作是把官方设备、安全、ABI 和 Android common 更新移植到当前自定义基线上。

## 当前上游同步状态

官方跟踪分支:

```text
upstream/oneplus-sm8750-b-16.0.0-oneplus-13
```

跟踪分支只镜像官方 common,不包含本项目自定义补丁。
该分支已精确镜像官方提交 `e1b346b6b4f4096eb342ae3684838a942fd6f6c4`。

## 当前状态
同步候选:

- `6.6-final` 包含本项目的 common 层自定义改动。
- 当前分支最新本地提交包含 BORE 生命周期修复等本地补丁。
- 官方 16.0.9.401 common 上游已经确认,但尚未宣称完整合入 `6.6-final`。
- 自动同步只负责更新官方跟踪分支,并在能够安全合并时创建 Draft PR。
- 无共同祖先或出现冲突时,工作流会停止并上传报告,不会覆盖 `6.6-final`。
- 真机启动和运行时验证仍由完整 OKI 工程完成。
```text
PR #6: chore: 同步 OnePlus 13 官方 common 16.0.9.401
branch: sync/official-16.0.9.401-e1b346b6b
status: Draft / conflicts
```

实际 `merge-tree` 核验发现 **80 个冲突路径**。主要分布:

- `drivers/`:29
- `fs/`:17
- `include/`:13
- `android/` ABI/KMI/AFDO:10
- `arch/`:8
- 根目录与文档:3

## 上游同步
完整冲突清单和处理顺序见 [`docs/UPSTREAM_SYNC_16.0.9.401.md`](docs/UPSTREAM_SYNC_16.0.9.401.md)。在冲突、完整 OKI 构建和真机验收完成前,PR #6 必须保持 Draft。

## 自动上游核验

工作流:

```text
.github/workflows/sync-upstream.yml
.github/workflows/verify-upstream-pr.yml
```

行为:

1. 获取官方 common 最新提交。
2. 强制更新独立的官方跟踪分支。
3. 检查官方上游与 `6.6-final` 是否存在共同祖先。
4. 有共同祖先且普通合并无文本冲突时,创建 `sync/upstream-*` 候选分支和 Draft PR。
5. 无共同祖先或存在冲突时停止,并保存同步报告。
6. 永不自动合并 `6.6-final`。
1. 使用 blobless 历史获取和稀疏工作树,避免完整检出大型 common 仓库。
2. 获取官方 common 最新提交。
3. 更新独立官方跟踪分支。
4. 检查共同祖先和提交差异。
5. 使用非破坏性的 `git merge-tree` 检查文本冲突。
6. 只有无冲突时才允许建立普通合并候选。
7. 永不自动覆盖或合并 `6.6-final`。

详细规则见 [`UPSTREAM.md`](UPSTREAM.md)。

Expand All @@ -86,30 +108,27 @@ repo manifest -r -o manifest-pinned.xml
./kernel_platform/oplus/build/oplus_build_kernel.sh sun perf
```

需要测试本仓库改动时,应在固定 manifest 的完整工作区内,将 `kernel_platform/common` 指向经过审核的本仓库提交,再重新进行完整构建。
测试本仓库改动时,应在固定 manifest 的完整工作区内,将 `kernel_platform/common` 指向经过审核的本仓库提交,再执行 clean build。

## 合并前检查

每个上游同步候选至少需要:

- [ ] 记录官方 common 提交 SHA
- [ ] 80 个冲突逐文件解决并记录理由
- [ ] 保存完整 `manifest-pinned.xml`
- [ ] 核对 common 与 msm-kernel / modules / DT 的版本匹配
- [ ] 逐项审核本地调度、ZRAM、Root、网络和安全补丁
- [ ] 完整 OKI clean build 成功
- [ ] Image、vendor_boot 与 vendor modules 的 vermagic / ABI 匹配
- [ ] OnePlus 13 / 对应 ColorOS 版本可重复启动
- [ ] 蜂窝、Wi-Fi、蓝牙、相机、指纹、充电和休眠通过测试
- [ ] Root、SuSFS、调度和网络功能通过测试
- [ ] 回退包和恢复路径可用
- [ ] common、msm-kernel、modules / DT revision 匹配
- [ ] ABI/KMI、OPlus symbol list 和 AFDO 检查通过
- [ ] `oplus_build_kernel.sh sun perf` clean build 成功
- [ ] Image、vendor_boot、vendor modules 与 vermagic 匹配
- [ ] OnePlus 13 / 对应 ColorOS 可重复启动和回退
- [ ] 蜂窝、Wi-Fi、蓝牙、相机、指纹、充电、温控和休眠通过测试
- [ ] Root、SuSFS、KPM、wait/HMBIRD/SCX 和网络功能通过测试

## 分支策略

| 分支 | 用途 |
|---|---|
| `6.6-final` | 当前自定义 common 开发基线 |
| `upstream/oneplus-sm8750-b-16.0.0-oneplus-13` | 官方 common 只读镜像 |
| `sync/upstream-*` | 自动生成的上游合并候选 |
| `sync/official-*` / `sync/upstream-*` | 固定官方提交的同步候选 |
| `fix/*` | 单一问题修复 |
| `feature/*` | 独立功能开发 |

Expand Down
82 changes: 55 additions & 27 deletions UPSTREAM.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,31 @@ Android common tag: android15-6.6-2026-01_r22

这些 SHA 只表示核对时各官方分支的 tip。正式构建必须保存 `OnePlusOSS/kernel_manifest:oneplus/sm8750` 下 `oneplus_13_b.xml` 对应的固定 revision manifest。

## 2. 完整工程依赖
## 2. 当前同步状态

| 项目 | 当前结果 |
|---|---|
| 本地分支 | `6.6-final` |
| 本地 common 版本 | Linux `6.6.126` |
| 官方 common 版本 | Linux `6.6.118` |
| 共同祖先 | `5a0ffb447c1dbd82e8e3af7a98c4a629f4b6d143` |
| 本地领先 | 8,947 commits |
| 本地落后 | 5 official commits |
| 官方镜像分支 | 已更新到 `e1b346b6b4f4096eb342ae3684838a942fd6f6c4` |
| 同步候选 | PR `#6` / Draft |
| 文本冲突 | 80 个路径 |

官方 16.0.9.401 与本地 `6.6-final` 存在共同祖先,但不是普通快进。本地 common 已经推进到 6.6.126,而官方设备树仍以 6.6.118 为版本号。本次工作是将官方设备、安全、ABI 和 Android common 更新移植到本地较新内核基线上,不得通过整树覆盖完成。

完整冲突清单、风险分类和处理顺序见:

```text
docs/UPSTREAM_SYNC_16.0.9.401.md
```

在 80 个冲突、完整 OKI clean build、ABI/KMI 和真机验收完成前,PR `#6` 必须保持 Draft。

## 3. 完整工程依赖

本仓库只对应 `kernel_platform/common`。上游审核时还必须同步检查:

Expand All @@ -39,62 +63,66 @@ Android common tag: android15-6.6-2026-01_r22

不能只更新 common 后直接发布。

## 3. 自动工作流行为
## 4. 自动工作流行为

`.github/workflows/sync-upstream.yml` 会:
`.github/workflows/sync-upstream.yml` 与 `.github/workflows/verify-upstream-pr.yml` 会:

1. 完整检出 `6.6-final` 历史。
1. 使用 blobless 历史获取和稀疏工作树,避免完整检出大型 common 仓库。
2. 获取官方 common 分支。
3. 将官方 tip 强制同步到独立跟踪分支。
4. 记录本地 SHA、官方 SHA、内核版本和共同祖先。
5. 有共同祖先时使用普通 `--no-ff` 合并创建候选。
6. 候选无未解决文本冲突时推送 `sync/upstream-*` 分支并创建 Draft PR。
7. 无共同祖先或出现冲突时停止,不创建误导性候选。
5. 使用非破坏性的 `git merge-tree` 检查冲突。
6. 只有不存在文本冲突时才允许建立普通合并候选。
7. 无共同祖先或出现冲突时停止,不创建误导性自动合并结果。
8. 上传 Markdown 报告并写入 Actions Summary。
9. 永不直接修改或自动合并 `6.6-final`。

跟踪分支的强制更新是预期行为,因为它只镜像官方浮动分支;本地开发提交不得放入该分支。
跟踪分支的强制更新是预期行为,因为它只镜像官方浮动分支;本地开发提交不得放入该分支。正式同步应使用固定 SHA 的 `sync/official-*` 分支。

## 4. 合并原则
## 5. 合并原则

1. 上游同步必须使用独立 PR。
1. 上游同步必须使用独立 Draft PR。
2. 不使用 `git merge -s ours`、整树覆盖或删除冲突文件。
3. 设备、ABI、安全和构建修复应先理解官方意图,再移植本地功能。
4. 本地补丁按功能组保留清晰提交边界。
5. 每次合并记录:
- 官方 common SHA
- 完整固定 manifest
- 本地基线 SHA
- 本地与官方内核版本
- 冲突文件和处理方式
- 工具链与构建结果
- 真机验证结果
6. 未完成 Boot Verified 前不得进入 Stable 发布。

## 5. 冲突处理顺序
## 6. 冲突处理顺序

1. ABI / KMI / symbol list
2. common 与 msm-kernel 接口
3. vendor modules / device tree 依赖
4. 构建系统、Kleaf / Bazel 和工具链
5. Root / ReSukiSU / SuSFS / KPM
6. 调度器与 task / scheduler 结构
7. ZRAM、内存、I/O 和文件系统
8. 网络、BBR、Netfilter、WireGuard
9. Baseband Guard、省电和其他功能
10. 非必要编译优化
1. `Makefile`、版本号与 Android common tag
2. ABI / KMI / symbol list / AFDO
3. common 与 msm-kernel 接口
4. vendor modules / device tree 依赖
5. `gki_defconfig`、Kleaf / Bazel 和工具链
6. Root / ReSukiSU / SuSFS / KPM
7. 调度器、task / scheduler 与 vendor hooks
8. ZRAM、内存、I/O、F2FS 和 EXT4
9. USB / Type-C / IOMMU / 电源与设备驱动
10. 网络、BBR、Netfilter、WireGuard
11. Baseband Guard、省电和其他功能
12. 非必要编译优化

调度器、`task_struct`、RCU、内存生命周期、文件系统和网络栈冲突必须逐项审查,不能以“编译通过”替代运行时正确性。
调度器、`task_struct`、RCU、内存生命周期、文件系统、ABI 和网络栈冲突必须逐项审查,不能以“编译通过”替代运行时正确性。

## 6. 完整验证
## 7. 完整验证

### 源码与构建

- [ ] 80 个冲突逐文件解决并记录理由
- [ ] `repo manifest -r` 已保存
- [ ] common / msm-kernel / modules / DT revision 匹配
- [ ] 无空 stub 或缺失组件绕过
- [ ] `oplus_build_kernel.sh sun perf` clean build 成功
- [ ] Image、vendor_boot、vendor modules 版本匹配
- [ ] ABI / KMI 检查通过
- [ ] ABI / KMI、OPlus symbol list 和 AFDO 检查通过

### 真机

Expand All @@ -106,9 +134,9 @@ Android common tag: android15-6.6-2026-01_r22
- [ ] 充电、电池状态、温控
- [ ] 灭屏、深度休眠、唤醒
- [ ] Root、SuSFS、KPM
- [ ] 默认 wait 与可选调度路径
- [ ] 默认 wait 与可选 HMBIRD / SCX 路径
- [ ] 网络栈、VPN / TUN、WireGuard

## 7. 回退
## 8. 回退

上游同步必须保持单独 PR 和提交边界。真机失败时优先整体回退该同步 PR,再按功能组拆分定位;不要在 `6.6-final` 上连续追加无法追踪的临时修补。
上游同步必须保持单独 PR 和提交边界。真机失败时优先整体回退同步 PR,再按功能组拆分定位;不要在 `6.6-final` 上连续追加无法追踪的临时修补。
Loading
Loading