Почему тюнер чешет сбой драйверов для создания после обновления ядра 4.4.0-143-универсального?

Я использую конкретный бренд карт ТВ-тюнера (технологии TBS), и драйверы не включены в ядро, так должен быть восстановлен после каждого обновления ядра. После установки вчерашнего обновления ядра 4.4.0-143-универсального драйверам TBS не удается создать, но если я возвращаюсь к 4.4.0-142-универсальному, они работают. Проблема происходит, когда выполнение делает, конкретно когда это пытается создать файл, названный videobuf-dma-sg.o, и вывод ошибок следующие:

  CC [M]  /home/backend/Drivers/linux-tbs-drivers/v4l/videobuf-dma-sg.o
/home/backend/Drivers/linux-tbs-drivers/v4l/videobuf-dma-sg.c: In function 'videobuf_dma_init_user_locked':
/home/backend/Drivers/linux-tbs-drivers/v4l/videobuf-dma-sg.c:187:21: warning: passing argument 6 of 'get_user_pages' makes pointer from integer without a cast [-Wint-conversion]
         rw == READ, 1, /* force */
                     ^
In file included from include/linux/scatterlist.h:7:0,
                 from include/linux/dma-mapping.h:10,
                 from /home/backend/Drivers/linux-tbs-drivers/v4l/videobuf-dma-sg.c:28:
include/linux/mm.h:1222:6: note: expected 'struct page **' but argument is of type 'int'
 long get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
      ^
/home/backend/Drivers/linux-tbs-drivers/v4l/videobuf-dma-sg.c:188:9: warning: passing argument 7 of 'get_user_pages' from incompatible pointer type [-Wincompatible-pointer-types]
         dma->pages, NULL);
         ^
In file included from include/linux/scatterlist.h:7:0,
                 from include/linux/dma-mapping.h:10,
                 from /home/backend/Drivers/linux-tbs-drivers/v4l/videobuf-dma-sg.c:28:
include/linux/mm.h:1222:6: note: expected 'struct vm_area_struct **' but argument is of type 'struct page **'
 long get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
      ^
/home/backend/Drivers/linux-tbs-drivers/v4l/videobuf-dma-sg.c:185:8: error: too many arguments to function 'get_user_pages'
  err = get_user_pages(current, current->mm,
        ^
In file included from include/linux/scatterlist.h:7:0,
                 from include/linux/dma-mapping.h:10,
                 from /home/backend/Drivers/linux-tbs-drivers/v4l/videobuf-dma-sg.c:28:
include/linux/mm.h:1222:6: note: declared here
 long get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
      ^
scripts/Makefile.build:291: recipe for target '/home/backend/Drivers/linux-tbs-drivers/v4l/videobuf-dma-sg.o' failed
make[3]: *** [/home/backend/Drivers/linux-tbs-drivers/v4l/videobuf-dma-sg.o] Error 1
Makefile:1454: recipe for target '_module_/home/backend/Drivers/linux-tbs-drivers/v4l' failed
make[2]: *** [_module_/home/backend/Drivers/linux-tbs-drivers/v4l] Error 2
make[2]: Leaving directory '/usr/src/linux-headers-4.4.0-143-generic'
Makefile:51: recipe for target 'default' failed
make[1]: *** [default] Error 2
make[1]: Leaving directory '/home/backend/Drivers/linux-tbs-drivers/v4l'
Makefile:26: recipe for target 'all' failed
make: *** [all] Error 2

Я в основном следую "рецепту" для создания этих драйверов, таким образом, я понятия не имею, что фактическая проблема или как разрешить его. Я не знаю, является ли это ошибкой в этой конкретной версии ядра, или если что-то изменилось, который будет навсегда препятствовать тому, чтобы драйверы были восстановлены. Я надеялся, что, возможно, некоторый добрый человек, который знает намного больше о создании из источника, чем, я мог, возможно, дать мне некоторый ключ к разгадке относительно того, что происходит здесь, и главное, что я, возможно, должен был бы сделать для фиксации его. Сделайте выполнения очень хорошо, и завершается без ошибок при использовании предыдущего 4.4.0-142-универсального ядра. Таким образом, то, что изменилось, интересно?

6
задан 16 March 2019 в 14:39

2 ответа

Для кого-либо еще, который пытается упорно искать эту определенную проблему, пользователь, который идет дескриптором, который CrazyCat обеспечил патчам/обновлениям к драйверам TBS, которые устраняют эту проблему. Существует также обсуждение этой проблемы на форуме TBS Driver & Software Update.

1
ответ дан 23 November 2019 в 07:37

То, что изменилось, является get_user_pages mm.h файла () интерфейс. Это изменение в основном коде ядра (в Jan) наконец проложило себе путь вниз к 4.4.0-143 выпускам ядра Ubuntu. Это вызвало все виды горя к драйверам Nvidia и некоторым vm драйверам, но они были переписаны. Другие драйверы, как Ваш или драйвер аудио Intel Compute Stick's HDMI в oem-hdmi-audio-dkms_0.1_all.deb могут или не могут получить переписывание. В основном у Вас есть три варианта:

  1. Останьтесь с 4.4.0-142 ядрами. Воздержитесь от всех будущих патчей ядра - 4,4 ряда мертвы Вам, пока Ваш драйвер не переписывается. Свяжитесь с поставщиком карт об этом, у них может быть новый драйвер.
  2. Перепишите драйвер сами. Это не может быть слишком плохо, похож на этот интерфейс, видел изменения в прошлом, и текущие просто отменяют некоторые вещи. Не пытайтесь, если у Вас нет некоторого опыта кода ядра. Возможно, наймите стороннего разработчика для фиксации драйвера, если безопасность и использование, что карта очень важна для Вас.
  3. Проведите свое время, ища более позднее ядро с поддержкой драйвера. HDMI аудио был исправлен в более поздних ядрах, как эти 4.18, поэтому возможно, можно обновить ОС/ядро. Снова, согласуйте с поставщиком карты, они могут знать, какие более поздние ядра имеют рабочий драйвер (если таковые имеются) включенный.

Некоторые машины отказывали, где-нибудь, таким образом, кто-то думал, изменяя интерфейс ядра LTS, было приемлемо. Я лично думаю, что они были неправы, но кто я для высказывания. Это изменение было восходящим из Канонических, таким образом, оно рассмотрело функцию, не ошибку, и вряд ли быть измененным, потому что некоторые старые драйверы больше не работают.

7
ответ дан 23 November 2019 в 07:37

Другие вопросы по тегам:

Похожие вопросы: