Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753145AbbGVWtE (ORCPT ); Wed, 22 Jul 2015 18:49:04 -0400 Received: from mail-pd0-f182.google.com ([209.85.192.182]:35170 "EHLO mail-pd0-f182.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752125AbbGVWtD (ORCPT ); Wed, 22 Jul 2015 18:49:03 -0400 MIME-Version: 1.0 In-Reply-To: References: <1437585214-22481-1-git-send-email-catalin.marinas@arm.com> From: Catalin Marinas Date: Wed, 22 Jul 2015 23:48:42 +0100 X-Google-Sender-Auth: u_i9RU6TC2XFSDb7wQpb8H5sOhs Message-ID: Subject: Re: [PATCH] mm: Flush the TLB for a single address in a huge page To: David Rientjes Cc: linux-mm , Linux Kernel Mailing List , Andrew Morton , Andrea Arcangeli Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1738 Lines: 42 On 22 July 2015 at 22:39, David Rientjes wrote: > On Wed, 22 Jul 2015, Catalin Marinas wrote: > >> When the page table entry is a huge page (and not a table), there is no >> need to flush the TLB by range. This patch changes flush_tlb_range() to >> flush_tlb_page() in functions where we know the pmd entry is a huge >> page. >> >> Signed-off-by: Catalin Marinas >> Cc: Andrew Morton >> Cc: Andrea Arcangeli >> --- >> >> Hi, >> >> That's just a minor improvement but it saves iterating over each small >> page in a huge page when a single TLB entry is used (we already have a >> similar assumption in __tlb_adjust_range). > > For x86 smp, this seems to mean the difference between unconditional > flush_tlb_page() and local_flush_tlb() due to > tlb_single_page_flush_ceiling, so I don't think this just removes the > iteration. You are right, on x86 the tlb_single_page_flush_ceiling seems to be 33, so for an HPAGE_SIZE range the code does a local_flush_tlb() always. I would say a single page TLB flush is more efficient than a whole TLB flush but I'm not familiar enough with x86. Alternatively, I could introduce a flush_tlb_pmd_huge_page (suggested by Andrea separately) and let the architectures deal with this as they see fit. The default definition would do a flush_tlb_range(vma, address, address + HPAGE_SIZE). For arm64, I'll define it as flush_tlb_page(vma, address). -- Catalin -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/