29 Mar, 2008

1 commit


26 Mar, 2008

1 commit


01 May, 2006

1 commit


20 Mar, 2006

2 commits

  • It is totally wasted work, since we have no D-cache aliasing
    issues on sun4v.

    Signed-off-by: David S. Miller

    David S. Miller
     
  • We now use the TSB hardware assist features of the UltraSPARC
    MMUs.

    SMP is currently knowingly broken, we need to find another place
    to store the per-cpu base pointers. We hid them away in the TSB
    base register, and that obviously will not work any more :-)

    Another known broken case is non-8KB base page size.

    Also noticed that flush_tlb_all() is not referenced anywhere, only
    the internal __flush_tlb_all() (local cpu only) is used by the
    sparc64 port, so we can get rid of flush_tlb_all().

    The kernel gets it's own 8KB TSB (swapper_tsb) and each address space
    gets it's own private 8K TSB. Later we can add code to dynamically
    increase the size of per-process TSB as the RSS grows. An 8KB TSB is
    good enough for up to about a 4MB RSS, after which the TSB starts to
    incur many capacity and conflict misses.

    We even accumulate OBP translations into the kernel TSB.

    Another area for refinement is large page size support. We could use
    a secondary address space TSB to handle those.

    Signed-off-by: David S. Miller

    David S. Miller
     

30 Oct, 2005

2 commits

  • zap_pte_range has been counting the pages it frees in tlb->freed, then
    tlb_finish_mmu has used that to update the mm's rss. That got stranger when I
    added anon_rss, yet updated it by a different route; and stranger when rss and
    anon_rss became mm_counters with special access macros. And it would no
    longer be viable if we're relying on page_table_lock to stabilize the
    mm_counter, but calling tlb_finish_mmu outside that lock.

    Remove the mmu_gather's freed field, let tlb_finish_mmu stick to its own
    business, just decrement the rss mm_counter in zap_pte_range (yes, there was
    some point to batching the update, and a subsequent patch restores that). And
    forget the anal paranoia of first reading the counter to avoid going negative
    - if rss does go negative, just fix that bug.

    Remove the mmu_gather's flushes and avoided_flushes from arm and arm26: no use
    was being made of them. But arm26 alone was actually using the freed, in the
    way some others use need_flush: give it a need_flush. arm26 seems to prefer
    spaces to tabs here: respect that.

    Signed-off-by: Hugh Dickins
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Hugh Dickins
     
  • tlb_is_full_mm? What does that mean? The TLB is full? No, it means that the
    mm's last user has gone and the whole mm is being torn down. And it's an
    inline function because sparc64 uses a different (slightly better)
    "tlb_frozen" name for the flag others call "fullmm".

    And now the ptep_get_and_clear_full macro used in zap_pte_range refers
    directly to tlb->fullmm, which would be wrong for sparc64. Rather than
    correct that, I'd prefer to scrap tlb_is_full_mm altogether, and change
    sparc64 to just use the same poor name as everyone else - is that okay?

    Signed-off-by: Hugh Dickins
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Hugh Dickins
     

17 Apr, 2005

1 commit

  • Initial git repository build. I'm not bothering with the full history,
    even though we have it. We can create a separate "historical" git
    archive of that later if we want to, and in the meantime it's about
    3.2GB when imported into git - space that would just make the early
    git days unnecessarily complicated, when we don't have a lot of good
    infrastructure for it.

    Let it rip!

    Linus Torvalds