Libseccomp: RFE: agregar soporte RISC-V

Creado en 20 feb. 2018  ·  28Comentarios  ·  Fuente: seccomp/libseccomp

Desde @rwmjones :

RISC-V es un ISA gratuito de código abierto desarrollado en UCB desde 2010 (https://riscv.org/).

Tenemos un PR anterior de @rwmjones en el n. ° 50 que agregó soporte para libseccomp antes de que se implementara el soporte del kernel (otoño de 2016).

Tenemos un PR más reciente de @Icenowy en el # 108 que agrega soporte para libseccomp, aunque el soporte del kernel aún se desconoce (febrero de 2018).

Este número está diseñado para realizar un seguimiento de las notas y el progreso en los RP.

enhancement prioritlow

Comentario más útil

Esperaré hasta que también se fusione "[GIT PULL] actualizaciones de seccomp para v5.5-rc1". Allí hay un pequeño parche RISC-V.

Todos 28 comentarios

El soporte del kernel de

@sorear Creo que está bien comentar una vez en el otro PR para cosas como las anteriores.

... y para mi yo futuro, no parece que v4.16-rc2 + tenga el soporte HAVE_ARCH_SECCOMP_FILTER necesario para RISC-V.

Actualización rápida, aún falta el soporte del kernel en el árbol de Linus:

# grep "HAVE_ARCH_SECCOMP_FILTER" $(find arch/*/  -type f)
arch/arm/Kconfig:       select HAVE_ARCH_SECCOMP_FILTER if (AEABI && !OABI_COMPAT)
arch/arm/kernel/ptrace.c:#ifdef CONFIG_HAVE_ARCH_SECCOMP_FILTER
arch/arm64/Kconfig:     select HAVE_ARCH_SECCOMP_FILTER
arch/mips/Kconfig:      select HAVE_ARCH_SECCOMP_FILTER
arch/parisc/Kconfig:    select HAVE_ARCH_SECCOMP_FILTER
arch/powerpc/Kconfig:   select HAVE_ARCH_SECCOMP_FILTER
arch/s390/Kconfig:      select HAVE_ARCH_SECCOMP_FILTER
arch/um/Kconfig.common: select HAVE_ARCH_SECCOMP_FILTER
arch/x86/Kconfig:       select HAVE_ARCH_SECCOMP_FILTER

Envié un compromiso de prototipo para nuestra rama del kernel risc-v de desarrollo aquí: https://github.com/riscv/riscv-linux/commit/0712587b63964272397ed34864130912d2a87020

Sin embargo, no estoy seguro de cómo probarlo.

Hola @terpstra

Si aún no se ha puesto en contacto con @kees, es posible que desee hablar con él, ya que mantiene el código seccomp en el kernel. En lo que respecta a las pruebas, libseccomp tiene algunas pruebas "en vivo" (cd tests; ./regression -T live) que ejercitan el código seccomp en el kernel; también hay samples / seccomp en las fuentes del kernel, pero no tengo ninguna experiencia directa con ellos.

Creo que hay un tercer parche en openSUSE: https://build.opensuse.org/package/view_file/openSUSE : Factory: RISCV / libseccomp / riscv.patch? Expand = 1

pero falta __NR_riscv_flush_icache .

Hola @terpstra , ¿el parche https://github.com/riscv/riscv-linux/commit/0712587b63964272397ed34864130912d2a87020 se fusionó con el núcleo de la línea principal? ¿Alguna idea sobre una línea de tiempo para ello? Quizás @ palmer-dabbelt pueda ayudar en esto.

He descargado todas las cosas del controlador de Linux que escribí para el U540 a Paul
y Palmer. Ya no estoy al tanto del upstreaming.

El miércoles, 5 de junio de 2019 a las 12:53 p. M. Carlos Eduardo [email protected]
escribió:

Hola @terpstra https://github.com/terpstra , ten el parche
riscv / riscv-linux @ 0712587
https://github.com/riscv/riscv-linux/commit/0712587b63964272397ed34864130912d2a87020
se fusionó con el núcleo de la línea principal? ¿Alguna idea sobre una línea de tiempo para ello? Quizás
@ palmer-dabbelt https://github.com/palmer-dabbelt puede ayudar en esto.

-
Recibes esto porque te mencionaron.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/seccomp/libseccomp/issues/110?email_source=notifications&email_token=AAIM7CU2KQFCLUTSCO2VYILPZAKUXA5CNFSM4ERS6NOKYY3PNVWWK3TUL52HS4DFVREXWHG43WZVMV ,
o silenciar el hilo
https://github.com/notifications/unsubscribe-auth/AAIM7CXIDCVBETFXJLBRY73PZAKUXANCNFSM4ERS6NOA
.

Envié parches de seccomp v1 hace unos meses (creo), que pasaban las pruebas de libseccomp testsuite y las autopruebas del kernel. Necesito encontrar tiempo para volver a probar en el último kernel para enviar v2. El parche libseccomp está aquí: https://github.com/seccomp/libseccomp/pull/134

@carlosedp ¿

No me preocuparía por eso hasta que el parche del kernel haya aterrizado en el árbol de Linus, pero parece que PR # 134 necesita un puerto de reenvío a la rama principal libseccomp actual.

No he visto RISC-V en algún tiempo, ¿hay algún hardware RISC-V a un precio razonable y con un rendimiento razonable para desarrollo / prueba que ejecute una distribución estándar?

@davidlt He extraído y aplicado el parche PR134 y prueba perfectamente incluso sin los parches del Kernel. Sería genial dar libseccomp para abrir la construcción de otras dependencias. Ya estoy ejecutando Docker construido localmente con esto.

@pcmoore En el lado del hardware, solo la placa SiFive Unleashed que es cara. Hay una máquina virtual Qemu que empaqueté con Debian (pero también hay un rootfs de Fedora que podría empaquetar). Se puede utilizar para el desarrollo.

Estoy rastreando las dependencias en https://github.com/carlosedp/riscv-bringup

En realidad, acabo de volver a probar con la punta con PR134. Obtuve 6 pruebas fallidas.

Los resultados se pueden ver en https://gist.github.com/carlosedp/7e1e222e5ccb4b45faa357dd6b30ac9a

Hmm, eso es extraño. Según el resultado de la prueba, parece que la prueba 46 está fallando con ENOMEM, lo cual es un poco inusual (consulte tools / scmp_bpf_sim.c). Estoy bastante ocupado en este momento y no tengo una máquina virtual RISC-V a mano para probar esto, pero si necesita algunos consejos sobre cómo depurar esto, no dude en preguntar.

Tengo una máquina virtual Qemu y una placa Risc-V. Mi kernel actual no tiene aplicados parches seccomp. Si tiene consejos sobre cómo puedo ayudar, ¡me alegra!
De lo contrario, si desea una máquina virtual RiscV Qemu, armé un paquete en https://github.com/carlosedp/riscv-bringup#virtual -machine-and-pre-built-docker.

@davidlt ¿ alguna actualización sobre el soporte del kernel RISC-V?

https://lkml.org/lkml/2019/10/14/811

Parece haber sido revisado por completo, pero el parche final se perdió entre dos desarrolladores.

El parche se envió a Linus para el kernel 5.4, pero no quería llevarlo tan lejos a los RC. El parche aterrizará en la ventana de fusión 5.5.

Tenga en cuenta que el parche ya está en linux-next, si eso importa.

¡Esas son buenas noticias, gracias a todos! Como parece que estamos a unas semanas de ver esto en el árbol de Linus, voy a seguir adelante y marcarlo para el hito de libseccomp v2.5.

¿Alguien quiere ofrecerse como voluntario para actualizar / probar / volver a enviar el PR una vez que se cierre la ventana de combinación?

Enviaré una nueva versión de PR una vez que libseccomp aterrice en el árbol de Linus.

Genial, gracias @davidlt.

Esperaré hasta que también se fusione "[GIT PULL] actualizaciones de seccomp para v5.5-rc1". Allí hay un pequeño parche RISC-V.

Gracias a todos. Todavía tenemos varias cosas en la lista de TODO para la versión v2.5, así que creo que tenemos algo de tiempo.

Actualización rápida. Comencé a actualizar Fedora / RISCV a 5.5-rc2 y hay varios problemas. Es posible que haya encontrado un problema creado por SECCOMP en el kernel y esté trabajando para solucionarlo primero. Estos problemas no se mostraron en la suite de pruebas libseccomp ni en las autopruebas del kernel seccomp.

Gracias por la actualización. FWIW, las pruebas de libseccomp no prueban agresivamente el kernel, se centran más en el lado de la biblioteca (ejecutar código a través de un simulador BPF).

Esto debe resolverse a través del # 197, cerrando.

¿Fue útil esta página
0 / 5 - 0 calificaciones