* EXPORT_SYMBOL_GPL(paravirt_ops);
@ 2006-08-10 17:59 Jeremy Fitzhardinge
2006-08-10 18:32 ` EXPORT_SYMBOL_GPL(paravirt_ops); Chris Wright
0 siblings, 1 reply; 8+ messages in thread
From: Jeremy Fitzhardinge @ 2006-08-10 17:59 UTC (permalink / raw)
To: Rusty Russell, Chris Wright, Zachary Amsden; +Cc: Virtualization Mailing List
This pretty much has to be EXPORT_SYMBOL(), otherwise we just required
all modules to be GPL...
J
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: EXPORT_SYMBOL_GPL(paravirt_ops);
2006-08-10 17:59 EXPORT_SYMBOL_GPL(paravirt_ops); Jeremy Fitzhardinge
@ 2006-08-10 18:32 ` Chris Wright
2006-08-10 19:11 ` EXPORT_SYMBOL_GPL(paravirt_ops); Zachary Amsden
0 siblings, 1 reply; 8+ messages in thread
From: Chris Wright @ 2006-08-10 18:32 UTC (permalink / raw)
To: Jeremy Fitzhardinge; +Cc: Chris Wright, Virtualization Mailing List
* Jeremy Fitzhardinge (jeremy@goop.org) wrote:
> This pretty much has to be EXPORT_SYMBOL(), otherwise we just required
> all modules to be GPL...
muwhahaha
The plan is working...
Yeah, I agree. We had to do similar for LSM.
thanks,
-chris
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: EXPORT_SYMBOL_GPL(paravirt_ops);
2006-08-10 18:32 ` EXPORT_SYMBOL_GPL(paravirt_ops); Chris Wright
@ 2006-08-10 19:11 ` Zachary Amsden
2006-08-10 19:40 ` EXPORT_SYMBOL_GPL(paravirt_ops); Chris Wright
0 siblings, 1 reply; 8+ messages in thread
From: Zachary Amsden @ 2006-08-10 19:11 UTC (permalink / raw)
To: Chris Wright; +Cc: Virtualization Mailing List
Chris Wright wrote:
> * Jeremy Fitzhardinge (jeremy@goop.org) wrote:
>
>> This pretty much has to be EXPORT_SYMBOL(), otherwise we just required
>> all modules to be GPL...
>>
>
> muwhahaha
>
> The plan is working...
>
> Yeah, I agree. We had to do similar for LSM.
>
> thanks,
> -chris
>
>
EXPORT_SYMBOL_GPL is still possible - if you patch over every op in
paravirt_ops. Then only the paravirt modules need to be GPL, not all
modules.
Zach
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: EXPORT_SYMBOL_GPL(paravirt_ops);
2006-08-10 19:11 ` EXPORT_SYMBOL_GPL(paravirt_ops); Zachary Amsden
@ 2006-08-10 19:40 ` Chris Wright
2006-08-10 20:23 ` EXPORT_SYMBOL_GPL(paravirt_ops); Zachary Amsden
0 siblings, 1 reply; 8+ messages in thread
From: Chris Wright @ 2006-08-10 19:40 UTC (permalink / raw)
To: Zachary Amsden; +Cc: Chris Wright, Virtualization Mailing List
* Zachary Amsden (zach@vmware.com) wrote:
> EXPORT_SYMBOL_GPL is still possible - if you patch over every op in
> paravirt_ops. Then only the paravirt modules need to be GPL, not all
> modules.
Problem is the pervasive nature. So any old module that was doing
local_irq_disable() will need access to the paravirt_ops structure via
local_irq_disable() -> raw_local_irq_disable -> paravirt_ops.irq_disable()
IOW, all modules need paravirt_ops access, otherwise non-GPL modules
will fail to load with "Unknown symbol paravirt_ops." We can't make an
interface change like that.
thanks,
-chris
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: EXPORT_SYMBOL_GPL(paravirt_ops);
2006-08-10 19:40 ` EXPORT_SYMBOL_GPL(paravirt_ops); Chris Wright
@ 2006-08-10 20:23 ` Zachary Amsden
2006-08-10 20:44 ` EXPORT_SYMBOL_GPL(paravirt_ops); Jeremy Fitzhardinge
2006-08-10 20:55 ` EXPORT_SYMBOL_GPL(paravirt_ops); Chris Wright
0 siblings, 2 replies; 8+ messages in thread
From: Zachary Amsden @ 2006-08-10 20:23 UTC (permalink / raw)
To: Chris Wright; +Cc: Virtualization Mailing List
Chris Wright wrote:
> * Zachary Amsden (zach@vmware.com) wrote:
>
>> EXPORT_SYMBOL_GPL is still possible - if you patch over every op in
>> paravirt_ops. Then only the paravirt modules need to be GPL, not all
>> modules.
>>
>
> Problem is the pervasive nature. So any old module that was doing
> local_irq_disable() will need access to the paravirt_ops structure via
>
> local_irq_disable() -> raw_local_irq_disable -> paravirt_ops.irq_disable()
>
> IOW, all modules need paravirt_ops access, otherwise non-GPL modules
> will fail to load with "Unknown symbol paravirt_ops." We can't make an
> interface change like that.
>
But my point is that if you patch everything in the paravirt_ops struct,
no module other than the paravirt_ops backend code needs paravirt_ops
access, so paravirt_ops can still be GPL only. The problem is you would
need to patch everything.
Zach
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: EXPORT_SYMBOL_GPL(paravirt_ops);
2006-08-10 20:23 ` EXPORT_SYMBOL_GPL(paravirt_ops); Zachary Amsden
@ 2006-08-10 20:44 ` Jeremy Fitzhardinge
2006-08-10 20:55 ` EXPORT_SYMBOL_GPL(paravirt_ops); Chris Wright
1 sibling, 0 replies; 8+ messages in thread
From: Jeremy Fitzhardinge @ 2006-08-10 20:44 UTC (permalink / raw)
To: Zachary Amsden; +Cc: Chris Wright, Virtualization Mailing List
On Thu, 2006-08-10 at 13:23 -0700, Zachary Amsden wrote:
> But my point is that if you patch everything in the paravirt_ops struct,
> no module other than the paravirt_ops backend code needs paravirt_ops
> access, so paravirt_ops can still be GPL only. The problem is you would
> need to patch everything.
Sure, but the default code leaves the module with a static dependency on
paravirt_ops, even if it doesn't have a dynamic one. If you patch every
single pv_op, then you could just make the static code ".fill ud2" and
have no dependency - but I don't think that's where we want to go.
J
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: EXPORT_SYMBOL_GPL(paravirt_ops);
2006-08-10 20:23 ` EXPORT_SYMBOL_GPL(paravirt_ops); Zachary Amsden
2006-08-10 20:44 ` EXPORT_SYMBOL_GPL(paravirt_ops); Jeremy Fitzhardinge
@ 2006-08-10 20:55 ` Chris Wright
2006-08-13 17:40 ` EXPORT_SYMBOL_GPL(paravirt_ops); Eric W. Biederman
1 sibling, 1 reply; 8+ messages in thread
From: Chris Wright @ 2006-08-10 20:55 UTC (permalink / raw)
To: Zachary Amsden; +Cc: Chris Wright, Virtualization Mailing List
* Zachary Amsden (zach@vmware.com) wrote:
> But my point is that if you patch everything in the paravirt_ops struct,
> no module other than the paravirt_ops backend code needs paravirt_ops
> access, so paravirt_ops can still be GPL only. The problem is you would
> need to patch everything.
Oh, I see what you mean, yes. There was some discussion of that,
basically run through generic patch, then ->patch() or some such.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: EXPORT_SYMBOL_GPL(paravirt_ops);
2006-08-10 20:55 ` EXPORT_SYMBOL_GPL(paravirt_ops); Chris Wright
@ 2006-08-13 17:40 ` Eric W. Biederman
0 siblings, 0 replies; 8+ messages in thread
From: Eric W. Biederman @ 2006-08-13 17:40 UTC (permalink / raw)
To: Chris Wright; +Cc: Virtualization Mailing List
Chris Wright <chrisw@sous-sol.org> writes:
> * Zachary Amsden (zach@vmware.com) wrote:
>> But my point is that if you patch everything in the paravirt_ops struct,
>> no module other than the paravirt_ops backend code needs paravirt_ops
>> access, so paravirt_ops can still be GPL only. The problem is you would
>> need to patch everything.
>
> Oh, I see what you mean, yes. There was some discussion of that,
> basically run through generic patch, then ->patch() or some such.
There is another solution. You can simply make the users of paravirt_ops
that aren't important enough to patch static functions in the kernel.
That plus the removal from the callers that always get patched should
make the GPL export safe.
Eric
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2006-08-13 17:40 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-08-10 17:59 EXPORT_SYMBOL_GPL(paravirt_ops); Jeremy Fitzhardinge
2006-08-10 18:32 ` EXPORT_SYMBOL_GPL(paravirt_ops); Chris Wright
2006-08-10 19:11 ` EXPORT_SYMBOL_GPL(paravirt_ops); Zachary Amsden
2006-08-10 19:40 ` EXPORT_SYMBOL_GPL(paravirt_ops); Chris Wright
2006-08-10 20:23 ` EXPORT_SYMBOL_GPL(paravirt_ops); Zachary Amsden
2006-08-10 20:44 ` EXPORT_SYMBOL_GPL(paravirt_ops); Jeremy Fitzhardinge
2006-08-10 20:55 ` EXPORT_SYMBOL_GPL(paravirt_ops); Chris Wright
2006-08-13 17:40 ` EXPORT_SYMBOL_GPL(paravirt_ops); Eric W. Biederman
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).