参考文档
https://www.jianshu.com/p/1848fabc9360
https://blog.youkuaiyun.com/mliubing2532/article/details/7577905
1、从内核patchwrok下载.patch问
https://lore.kernel.org/patchwork/patch/824257/
kernel后面把patch的网页给变了
https://lore.kernel.org/lkml/20170822212647.11520-1-f.fainelli@gmail.com/
我们可以选择mbox版本,也可以选series版本的。选择series版本的,会把相关给的一系列补丁都下载到一个.patch文件中
我们现在补丁只有一个,不是一个系列的,选择mbox版本和series版本是一样的。
[net-next] net: phy: Deal with unbound PHY driver in phy_attached_print()
例如下面的补丁有一系列相关的补丁,选择mbox版本,一个patch文件只会现在一个patch,选择series版本,一个patch文件会把所有相关的都下载下来:
[v2,1/2] iommu/amd: Support multiple PCI DMA aliases in device table
[v2,2/2] iommu/amd: Support multiple PCI DMA aliases in IRQ Remapping
2、把patch文件放到内核对应目录,这里选择和driver同级目录下,是因为patch文件中diff的目录,这样放置是最简单的
3、使用checkpatch.pl检查patch
./scripts/checkpatch.pl --no-signoff -q --max-line-length=120 -ignore BAD_SIGN_OFF,GERRIT_CHANGE_ID,FILE_PATH_CHANGES,REDUNDANT_CODE,GIT_COMMIT_ID net-next-net-phy-Deal-with-unbound-PHY-driver-in-phy_attached_print.patch
可以发现有一样超过了75个字符导致检查不过,我们jenkins的检查patch的配置就是这么检查的。(这个patch比较特殊,由于log里面含有call trace,内核mainline在merge的时候,也没有检查是否超过75个字符)
4、git am --abort
把之前am的patch都abort掉(重要)
5、git apply 统计一下patch修改了多少(非必要步骤,就看看,不干啥)
6、git am 把patch打上去
如果只是提示了applying,没有提示错误说明补丁打上去
7、git push到gerrit库上
可以看到此时会有问题,原因是缺失Change-ID
8、执行gitdir →git commit --amend→git push
https://www.jianshu.com/p/1848fabc9360
9、修改代码,手动构造两个phyid不匹配的情况
我们把broadcom BCM50612E phy_driver的phyid改成一个不合法的值,人为制造reg获取的phy_id和调用 phy_drivers_register 注册的driver中的phy_id不匹配的场景
发现没有Oops,打印出mdio_bus stmmac-0:01: attached PHY driver [unbound] (mii_bus:phy_addr=stmmac-0:01, irq=-1)