Hi Viresh, sorry for being late in replying. On 11/5/20 4:41 AM, Viresh Kumar wrote: > On 04-11-20, 17:54, Nicola Mazzucato wrote: >> Initially I thought to place a comment right there but I ended up with an >> explanation of this case at the top of this function (the corner-case). It >> probably also needs more details.. > > I read it earlier as well but yeah, that wasn't good enough for me to > understand what you are doing. > >> Basically, on this case - empty opp table & opp-shared - we limit the scope of >> opp-shared to *only* tell us about hw description, and not marking the opp >> points as shared, since they are not present in DT. > > It doesn't matter where the OPP table entries are coming from. The OPP > table should be marked shared if it is found to be shared. > >> It would be the equivalent >> of describing that devices share clock/voltage lines, but we can't tell anything >> about opp points cause they are not there (in DT). > > Its okay, even then we should set the right flags here. It is really > confusing that we blindly set it as exclusive, even though it may be > shared. > >> OTOH If we don't set shared_opp to OPP_TABLE_ACCESS_EXCLUSIVE for that specific >> case, we won't be able to add opps for the remaining cpus as the opp core >> will find the opps as duplicated. This is a corner case, really. > > Hmm, I am not sure where you fail and how but this should be set to > OPP_TABLE_ACCESS_EXCLUSIVE only if the OPP table isn't shared. else it > should be OPP_TABLE_ACCESS_SHARED. > Thanks for providing more details around the meaning of opp-shared, much appreciated. I had some time to play a bit more, and yes, there is no need to set shared_opp to OPP_TABLE_ACCESS_EXCLUSIVE. A minimal change in the driver sequence would suffice. I will remove that in the V4. Many thanks, Nicola