Port-amd64 archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: support for more than 32 CPUs



Manuel Bouyer <bouyer%antioche.eu.org@localhost> wrote:
> > > Hello,
> > > the attached patch,
> > 
> > Which I forgot to attach, as pointed out by several of you. Here it is.
> 
> And it looks like it didn't get to the lists, maybe because it's too
> large. You can find it at: http://www.netbsd.org/~bouyer/x8664cpu.diff

Cool!  The patch seems the same as original, but my silly bugs fixed. :)
Did you try it on multiple SMP machines?  Concern is the early boot, when
due to our messy MD initialisation code bugs like missing TLB flush can
happen.  While on some machines it fails immediately, on other machines
it might be pretty lucky (and once booted, it is handled correctly).

From pmap_tlb_intr():

+       if (!kcpuset_isset(tm->tm_pending, cid)) {
+               return;
+       }

I kept this pending mask to have the code more defensive i.e. it would
handle spurious IPIs.  However, AFAIK, that should not happen, unless
the hardware fails.  If so, tm_pendcount and tm_gen is enough and that
pending mask can be removed.  Do you see/know any corner case here?

Thanks a lot for working on this!  Do you want me to commit the patch,
or would like to do it yourself?

-- 
Mindaugas


Home | Main Index | Thread Index | Old Index