A aplicação do patch do kernel PREremPT do RT falha

0

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.

    
por Forivin 06.02.2018 / 13:51

1 resposta

0

Se você ainda tem o problema, agora o repositório oficial do kernel do pi framboesa tem uma ramificação para o Preempt-RT versão corrigida do kernel. Você não precisa mais corrigir o kernel "vanilla". Isso significa que você não precisa encontrar uma correspondência entre a versão do kernel e a versão do patch do rt. Além disso, alguns outros patches estão incluídos.

Eu escrevi um tutorial e fez alguns testes de desempenho . Ainda há alguns problemas com os irqs usb / lan. Estou fazendo alguns testes com o RPi 3 B +, vou publicá-los esta semana.

    
por 19.03.2018 / 00:00