On Wed, Jun 13, 2012 at 09:29:50AM -0700, David Daney wrote: > On 06/13/2012 08:44 AM, Shane McDonald wrote: > >On Mon, Jun 11, 2012 at 12:32 PM, Shane McDonald > ><mcdonald.shane@xxxxxxxxx> wrote: > >>There is a line: > >> > >>__setup("cca=", cca_setup); > >> > >>that seems to be used to call cca_setup(). I don't know how > >>the __setup() works, so I'm a little lost on the solution myself. > >> > >>Note that, besides the cca_setup(), there is also a routine > >>setcoherentio() that is defined the same way as cca_setup(). > >>I suspect that suffers from the same problem as cca_setup(). > > > >I've been doing a little learning on how the __setup() macro works. > >A proposed solution I have is to change from using the __setup() > >macro to using early_param() to mark the call to cca_setup(). > > This is the exact change I was going to suggest. > > >Functions marked with __setup() are executed late in the boot > >process, whereas those marked with early_param() occur > >very early in the process. I have tried this out, > >and it solves my problem, but I'm looking for feedback on > >whether this is the correct solution. > > > >Unless I get any different feedback, I'll send out a patch with > >my change later today. > > Assuming that such a patch passes checkpatch.pl and is otherwise > clean, you could add: Sounds fine to me too, as long as the it's still being called early enough. The value is being used for all TLB mappings so it should be ready latest when the TLB mappings or pagetable entries are computed. Ralf