GCC options for kernel live-patching (Was: Add a new option to control inlining only on static functions)

Qing Zhao qing.zhao@oracle.com
Wed Oct 3 16:11:00 GMT 2018


> On Oct 3, 2018, at 5:19 AM, Martin Jambor <mjambor@suse.cz> wrote:
> 
> Hi,
> 
> On Tue, Oct 02 2018, Qing Zhao wrote:
>> So, here comes the next question:
>> 
>> what will be the better approach for helping live-patching?
>> 
>> A. disable all the optimization/analyzes that changing a function based on other functions.  this includes most of 
>> the IPA optimizations, inlining, cloning, ipa side effect analysis, etc.
> 
> We came to the conclusion that we do not want to disable (any) inlining
> - primarily for performance reasons but also because of always_inline.
> When you have to deal with inlining, you can use the same mechanism for
> IPA-CP clones, IPA-SRA and anything that creates clones and callers need
> to be patched.
> 
> Always_inline is also the reason why I would discourage anyone from
> attempting this, it looks too much like an irresolvable conflict.

Okay.

However, there are also other users of live-patching who request only inlining static routines to control the code size explosion and debugging
complexity as the start of the whole discussion. 

in addition to control inlining, I am not sure whether we want to control  ipa-cp, ipa-sra, etc to further control the code size and debugging complexity?

we should also include such request into this work.

> 
>> 
>> B. enable all such optimizations, but compute the list of possibly affected functions from those IPA optimizations.
> 
> Although certainly possible, we came to the conclusion that it would be
> impractical to attempt to track all decisions affected by, say, a
> function being pure, or a variable read-only, etc.  Impractical to the
> point when at least I personally would also discourage anyone from
> attempting this too, it would be necessary to record this info deep
> inside AA, VRP, who know what else, and keep it up to date.

I think that theoretically the compiler should be able to do this.  But the impacted routine list might be huge. that also lead problems of code size explosion and debugging complexity.

> 
>> 
>> C. enable part of them and disable the other part of them.  for the part of enabled ones,  compute the list of possibly affected functions
>> from them.
> 
> Which means we would like to go this route.
Qing
> 
> Martin
> 



More information about the Gcc-patches mailing list