"Propietario - no": controladores de capa intermedia para acceder a llamadas GPL del kernel de Linux sugerido bloqueo



El desarrollo propietario ha penetrado profundamente en el código de muchas aplicaciones y servicios. En sistemas complejos, deshacerse de ellos es muy difícil. A menudo se utilizan soluciones alternativas para esto, que son más como "muletas". El kernel de Linux utiliza controladores de capa intermedia para trabajar con controladores propietarios, que están diseñados casi exclusivamente para traducir las llamadas de controladores al kernel. La capa intermedia tiene código fuente abierto, por lo que no hay problemas con la licencia GPL, se han seguido los trámites.



Pero este enfoque tiene muchos oponentes. Uno de ellos es Christoph Hellwig, un desarrollador de kernel de Linux. Anteriormente fue miembro del comité directivo técnico de la Fundación Linux. También se desempeñó como demandante en una demanda con VMware. Helvig propuso reforzar significativamente la protección contra la vinculación de controladores propietarios a componentes del kernel de Linux.



Para hacer esto, sugiere usar parches que permitan heredar banderas asociadas con la exportación de símbolos GPL. En este caso, la bandera TAINT_PROPRIETARY_MODULE se hereda en todos los módulos que importan símbolos de módulos con esta bandera. La esencia de la protección es que si el controlador de capa importa algo que no sea del módulo GPL, entonces el módulo GPL heredará la etiqueta TAINT_PROPRIETARY_MODULE y no podrá acceder a los componentes del kernel disponibles solo para módulos GPL.





Fuente: 3dnews



Durante la discusión, también se propuso un bloqueo inverso. Por lo tanto, si un módulo importa EXPORT_SYMBOL_GPL, los símbolos exportados por el módulo no deben ser importados por módulos que no afirman ser compatibles con GPL. La propuesta no fue hecha por Helwig, sino por otro participante en la discusión. Pero Helwig estuvo de acuerdo con él. Lo más probable es que Linus Torvalds no se salte esta propuesta, ya que bloqueará varios subsistemas del kernel para controladores propietarios.



Todo el alboroto estalló después de la publicaciónun ingeniero de parches de Facebook con la implementación del subsistema netgpu. Este subsistema permite organizar el intercambio directo de datos entre la tarjeta de red y la GPU con la ejecución del procesamiento del protocolo por parte de la CPU. Sobre la base de la propuesta, puede realizar una implementación general de RDMA para el intercambio de datos entre GPU o CXD externo. Muchos desarrolladores expresaron su descontento con tales innovaciones, ya que la implementación está disponible solo para controladores NVIDIA propietarios a través de la capa proporcionada por estos controladores. Helvig incluso llamó al desarrollador un troll.



A su vez, el autor del parche objetó que el subsistema no está vinculado a NVIDIA, por lo que se puede proporcionar soporte para interfaces de software para GPU AMD e Intel. En última instancia, se consideró imposible promover netgpu en el kernel hasta que existiera un soporte funcional basado en controladores gratuitos como AMDGPU, Intel i915 o Nouveau.



All Articles