On Tue, Apr 13, 2021 at 12:17 PM Sean Anderson <sean...@gmail.com> wrote: > > On 4/13/21 12:12 AM, Rick Chen wrote: > > Hi Sean > > > >> On 4/12/21 10:39 PM, Rick Chen wrote: > >>> Hi Green, > >>> > >>>> From: Green Wan [mailto:green....@sifive.com] > >>>> Sent: Monday, April 12, 2021 10:33 AM > >>>> To: Sean Anderson > >>>> Cc: Rick Chen; Rick Jian-Zhi Chen(陳建志); Bin Meng; U-Boot Mailing List; > >>>> Paul Walmsley; Pragnesh Patel; Simon Glass; Atish Patra; Leo Yu-Chi > >>>> Liang(梁育齊); Brad Kim > >>>> Subject: Re: [RFC PATCH v4 1/2] arch: riscv: cpu: Add callback to init > >>>> each core > >>>> > >>>> Hi Bin and Sean, > >>>> > >>>> While we keep the consistency of cache control discussion going, later > >>>> today I'd like to send the v5 patch which is not directly relevant to > >>>> cache control. > >>> > >>> I will prefer not to mix cache control issue into this patch. > >>> Like I said, this callback is a init for all harts before lottery. > >> > >> Yes, but enabling caches is a very similar thing (this proposal even > >> uses it to turn on caches, among other things). At the moment we have > >> two calls to enable caches at almost the same time as what Green > >> proposes. These calls only translate into work done on one platform. I > >> think having one call (or perhaps two) for this purpose would help > >> reduce codepaths across different platforms going forward. > >> > > > > Maybe we can add two callbacks (early_lottery_init and > > late_lottery_init) before and after lottery individually for all > > scenarios. > > Yes, that is a possibility. But do we actually need that flexibility? > This comes back around to my original question: why does ax25 disable > cache on all harts before jumping to Linux?
I sort of agree with Sean to merge some callbacks and keep most boot flow clean. And I feel early/late_lottery_init not a generic/meaningful name for a bootloader. But I doubt we should restrict all harts that must be cache enabled/disabled. Won't it conflict with some H/W behavior or decrease flexibilities? > > And of course, does this actually need to be done before the lottery? Not sure the question is for me. Since some callbacks are only called by main hart after picking up the lottery, any init must be done within each hart itself, we have to do them before the lottery unless HW provides a common way to set up all harts. Of course, we can use IPI. But IPI is not a straightforward way. - Geen > > --Sean >