2007-11-01 18:36:52

by Tobias Powalowski

[permalink] [raw]
Subject: 2.6.24 breaks nvidia and amd/ati binary drivers, by exporting paravirt symbols as GPL

Hi
commit to .24 tree:
http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=93b1eab3d29e7ea32ee583de3362da84db06ded8

introduces:
+EXPORT_SYMBOL_GPL(pv_mmu_ops);
+EXPORT_SYMBOL_GPL(pv_cpu_ops);

pv_cpu_ops is for nvidia
pv_mmu_ops' is for amd(ati)

which will break 32bit systems with paravirt enabled and trying to compile
the binary graphic drivers from amd(ati) and nvidia.


is there a chance to see these symbols not exported as GPL?
Or do they have to change their binary drivers?

thanks in advance
greetings
tpowa
--
Tobias Powalowski
Archlinux Developer & Package Maintainer (tpowa)
http://www.archlinux.org
[email protected]


Attachments:
(No filename) (661.00 B)
signature.asc (189.00 B)
This is a digitally signed message part.
Download all attachments

2007-11-01 18:47:27

by Jan Engelhardt

[permalink] [raw]
Subject: Re: 2.6.24 breaks nvidia and amd/ati binary drivers, by exporting paravirt symbols as GPL


On Nov 1 2007 19:36, Tobias Powalowski wrote:
>Hi
>commit to .24 tree:
>http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=93b1eab3d29e7ea32ee583de3362da84db06ded8
>
>introduces:
>+EXPORT_SYMBOL_GPL(pv_mmu_ops);
>+EXPORT_SYMBOL_GPL(pv_cpu_ops);
>
>pv_cpu_ops is for nvidia
>pv_mmu_ops' is for amd(ati)
>

Speaking of which, the patch introduced a strict-aliasing warning (that
is, common userspace program compilation would warn about such) at:

+ return *((void **)&tmpl + type);

&tmpl is of type struct paravirt_patch_template **, and cross-casting
this to void ** usually gives a strict-aliasing warning.
A workaround is to pre-cast to void *,
return *((void **)(void *)&tmpl + type);
is that ok?