Date: Fri, 28 Sep 2007 21:25:15 -0700 From: Darren Pilgrim <freebsd@bitfreak.org> To: freebsd-current@freebsd.org Subject: Non-sequential AP starts [Was: Re: 8-core server] Message-ID: <46FDD3AB.3050305@bitfreak.org> In-Reply-To: <20070928184659.GB57646@cicely12.cicely.de> References: <b41c75520709280103ied4e99dvfd33884185792a91@mail.gmail.com> <46FCB7B7.9010301@FreeBSD.org> <b41c75520709280121r1a1c658dje2c36d675fe82aa6@mail.gmail.com> <20070928083322.GA17225@eos.sc1.parodius.com> <46FD1631.9020708@evilphi.com> <20070928184659.GB57646@cicely12.cicely.de>
next in thread | previous in thread | raw e-mail | index | archive | help
Bernd Walter wrote: > On Fri, Sep 28, 2007 at 07:56:49AM -0700, Darren Pilgrim wrote: >> Jeremy Chadwick wrote: >>> I think what you're not noticing is that the cores are being launched in >>> non-sequential order. 1, 2, 3, 4, 7, 5, 6. This isn't a problem. >> Why they wouldn't be launched sequentially? > > First SMP rule: > Don't expect a specific execution order from things running parallel. > > I don't know the code, but would assume that they are started > sequentially and each core prints it's own line, so they get > disordered. This question bugged me long enough for me to go read some source to find the answer, but I ended up with more questions. I guess that's what I get for reading boot code. :) I know it's basically just a race condition, but where does the race actually occur? In each core's execution of startup instructions leading up to the printf() in init_secondary() or in the assignment of the value returned by PCPU_GET(cpudid)? Where is the data behind PCPU_GET() anyway? I couldn't find it. Is AP launch order random or are there CPU characteristics that result in reproducible non-sequential ordering?
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?46FDD3AB.3050305>