LinuxカーネルにRT PREEMPTパッチを適用しようとしています。ガイドで述べたようにこれそしてこれ、以下を行う必要があります。
zcat patch-4.14.15-rt13.patch.gz | patch -p1
(カーネルソースコードを含むディレクトリにあるとします。)
しかし、次のようなメッセージがたくさんあります。
The next patch would create the file tools/testing/selftests/ftrace/test.d/trigger/inter-event/trigger-synthetic-event-createremove.tc,
which already exists! Assume -R? [n]
Apply anyway? [n]
Skipping patch.
1 out of 1 hunk ignored
patching file virt/kvm/arm/arm.c
Reversed (or previously applied) patch detected! Assume -R? [n]
Apply anyway? [n]
Skipping patch.
3 out of 3 hunks ignored -- saving rejects to file virt/kvm/arm/arm.c.rej
結局、そのプロセスは失敗しました。私はubuntu:16.04
これをDockerコンテナとDockerコンテナの両方で試しましたが、debian:stretch
結果は同じです。
ちなみに、パッチ処理はbashスクリプトの一部なので、対話できません。
パッチを適用しています。ラズベリーパイカーネルソースコードところで。
ここにいる完全なパッチ出力。
私は何が間違っていましたか?パッチを正しく適用する方法は?
その内容はvirt/kvm/arm/arm.c.rej
次のとおりです。
--- virt/kvm/arm/arm.c
+++ virt/kvm/arm/arm.c
@@ -650,7 +650,7 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu, struct kvm_run *run)
* involves poking the GIC, which must be done in a
* non-preemptible context.
*/
- preempt_disable();
+ migrate_disable();
kvm_pmu_flush_hwstate(vcpu);
@@ -687,7 +687,7 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu, struct kvm_run *run)
kvm_pmu_sync_hwstate(vcpu);
kvm_timer_sync_hwstate(vcpu);
kvm_vgic_sync_hwstate(vcpu);
- preempt_enable();
+ migrate_enable();
continue;
}
@@ -742,7 +742,7 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu, struct kvm_run *run)
kvm_vgic_sync_hwstate(vcpu);
- preempt_enable();
+ migrate_enable();
ret = handle_exit(vcpu, run, ret);
}
建築後。