Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 30 Jun 2011 20:34:55 +0000 (UTC)
From:      Marcel Moolenaar <marcel@FreeBSD.org>
To:        cvs-src-old@freebsd.org
Subject:   cvs commit: src/sys/ia64/ia64 exception.S pmap.c
Message-ID:  <201106302035.p5UKZBIl012640@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help

marcel      2011-06-30 20:34:55 UTC

  FreeBSD src repository

  Modified files:
    sys/ia64/ia64        exception.S pmap.c 
  Log:
  SVN rev 223700 on 2011-06-30 20:34:55Z by marcel
  
  Change the management of nested faults by switching to physical
  addressing while reading or writing the trap frame. It's not
  possible to guarantee that the one translation cache entry that
  we depend on is not going to get purged by the CPU. We already
  know that global shootdowns (ptc.g and/or ptc.ga) can (and will)
  cause multiple TC entries to get purged and we initialize tried
  to handle that by serializing kernel entry with these operations.
  However, we need to serialize kernel exit as well.
  
  But even if we can serialize, it appears that CPU threads within
  a core can affect each other's TC entries beyond the global
  shootdown. This would mean serializing any and all translatation
  cache updates with the threads in a core with the kernel entry
  and exit of any thread in that core. This is just too painful
  and complicated.
  
  Since we already properly coded for the 2 nested faults that we
  can get, all we need to do is use those to obtain the physical
  address of the trap frame, switch to physical mode and in that
  way eliminate any further faults. The trap frame is already
  aligned to 1KB boundaries to make sure we don't cross the page
  boundary, this is safe to do.
  
  We still need to serialize ptc.g or ptc.ga across CPUs because
  the platform can only have 1 such operation outstanding at the
  same time. We can now use a regular (spin) lock for this.
  
  Also, it has been observed that we can get a nested TLB faults
  for region 7 virtual addresses. This was unexpected. For now,
  we enhance the nested TLB fault handler to deal with those as
  well, but it needs to be understood.
  
  Revision  Changes    Path
  1.76      +115 -110  src/sys/ia64/ia64/exception.S
  1.233     +7 -23     src/sys/ia64/ia64/pmap.c



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201106302035.p5UKZBIl012640>