Estou tentando aplicar o patch RT PREEMPT para o kernel do Linux.
Como mencionado em guias como este e isto , você deve fazer assim:
zcat patch-4.14.15-rt13.patch.gz | patch -p1
(assumindo que você esteja no diretório que contém as fontes do kernel).
Mas recebo muitas mensagens como:
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
E no final o processo falha. Eu tentei isso em um contêiner docker ubuntu:16.04
e debian:stretch
, o resultado foi o mesmo.
Eu não consigo interagir com o processo de patch btw porque é parte de um script bash.
Estou aplicando o patch nos fontes do kernel para o Raspberry Pi btw.
Aqui está a saída completa do patch .
O que estou fazendo de errado? Como posso aplicar o patch corretamente?
O conteúdo de 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);
}
após a compilação.