dbason / crystalhd

Broadcom Crystal HD Hardware Decoder (BCM70012/70015) driver on Ubuntu
39 stars 11 forks source link

Cannot compile on recent Ubuntu 16.04LTS 4.4.0 kernels #25

Closed MoTLD closed 4 years ago

MoTLD commented 5 years ago

First, thanks for maintaining this driver! I've been enjoying the battery savings of a CrystalHD card for years thanks to you.

Unfortunately, several kernel updates ago it stopped compiling. Can't remember when it was exactly, but I wasn't watching offline videos much at the time so I just ignored it and watched without the CrystalHD. Lately I've finally gotten around to researching the problem, so first I checked here for updates and cloned the latest, but it didn't help. My cursory googling didn't find anything helpful either, so I figured I'd report it and see what you can maybe do.

Here's my output from make:

motld@monstrosity:~/crystalhd-dbason/driver/linux$ make -j2 make -C /lib/modules/4.4.0-150-generic/build SUBDIRS=/home/motld/crystalhd-dbason/driver/linux modules make[1]: Entering directory '/usr/src/linux-headers-4.4.0-150-generic' CC [M] /home/motld/crystalhd-dbason/driver/linux/crystalhd_lnx.o CC [M] /home/motld/crystalhd-dbason/driver/linux/crystalhd_misc.o /home/motld/crystalhd-dbason/driver/linux/crystalhd_misc.c: In function ‘crystalhd_map_dio’: /home/motld/crystalhd-dbason/driver/linux/crystalhd_misc.c:667:12: error: passing argument 7 of ‘get_user_pages’ from incompatible pointer type [-Werror=incompatible-pointer-types] 0, dio->pages, NULL); ^ In file included from /home/motld/crystalhd-dbason/driver/linux/crystalhd_lnx.h:34:0, from /home/motld/crystalhd-dbason/driver/linux/crystalhd_misc.c:33: 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/motld/crystalhd-dbason/driver/linux/crystalhd_misc.c:666:8: error: too many arguments to function ‘get_user_pages’ res = get_user_pages(current, current->mm, uaddr, nr_pages, rw == READ, ^ In file included from /home/motld/crystalhd-dbason/driver/linux/crystalhd_lnx.h:34:0, from /home/motld/crystalhd-dbason/driver/linux/crystalhd_misc.c:33: include/linux/mm.h:1222:6: note: declared here long get_user_pages(struct task_struct tsk, struct mm_struct mm, ^ cc1: all warnings being treated as errors scripts/Makefile.build:285: recipe for target '/home/motld/crystalhd-dbason/driver/linux/crystalhd_misc.o' failed make[2]: [/home/motld/crystalhd-dbason/driver/linux/crystalhd_misc.o] Error 1 make[2]: Waiting for unfinished jobs.... Makefile:1454: recipe for target 'module/home/motld/crystalhd-dbason/driver/linux' failed make[1]: [module/home/motld/crystalhd-dbason/driver/linux] Error 2 make[1]: Leaving directory '/usr/src/linux-headers-4.4.0-150-generic' Makefile:33: recipe for target 'all' failed make: [all] Error 2

And from uname, for reference:

motld@monstrosity:~/crystalhd-dbason/driver/linux$ uname -a Linux monstrosity 4.4.0-150-generic #176-Ubuntu SMP Wed May 29 18:56:26 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

Let me know if there's any more info I can provide or testing I can do. Thanks!

elpraga commented 5 years ago

I'm experiencing the same issue.

Thank you for having been maintaining the driver!!

dbason commented 5 years ago

Hey, sorry I've been a bit slack in maintaining it recently. I'll try and take a look at this when I can

MoTLD commented 4 years ago

Did you ever get a chance to look into this, and does it look fixable...?

Thanks!

dlenski commented 4 years ago

Did #23 not fix this for you, @MoTLD? It's building fine for me on Ubuntu 16.04LTS with 4.15.0 kernel.

MoTLD commented 4 years ago

'Fraid not. And I'm not on 4.15.0, uname -a shows "Linux monstrosity 4.4.0-173-generic #203-Ubuntu SMP Wed Jan 15 02:55:01 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux" and I should be current with updates. Did you do something different to be on a newer kernel, or am I doing something wrong to be on an older one?

In any case, I still get the same errors I reported above.

MoTLD commented 4 years ago

So, I did a little research and apparently I'm only on the 4.4 kernel because I've been using 16.04 since it came out (started with 14.04, actually) and Ubuntu LTS versions keep their original kernel series through upgrades. If I'd started with 16.04.2, for instance, I'd be on 4.8. But there's a method to upgrade the kernel and X server called HWE, which I installed and which brought me up to 4.15.

And the crystalhd driver now compiles and works fine! Thanks for your help, @dlenski!

I'm going to close this issue since I got things to work, but there is apparently still a problem compiling on 4.4 kernels. If anyone is stuck using a 4.4 kernel for whatever reason, they can reopen it (if you can do that) or open a new issue for it.