virtualization.lists.linux-foundation.org archive mirror
 help / color / mirror / Atom feed
* 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).