From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757840AbcLUSMu (ORCPT ); Wed, 21 Dec 2016 13:12:50 -0500 Received: from asavdk4.altibox.net ([109.247.116.15]:40709 "EHLO asavdk4.altibox.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757339AbcLUSMt (ORCPT ); Wed, 21 Dec 2016 13:12:49 -0500 Date: Wed, 21 Dec 2016 19:12:43 +0100 From: Sam Ravnborg To: Mike Kravetz Cc: sparclinux@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, "David S . Miller" , Bob Picco , Nitin Gupta , Vijay Kumar , Julian Calaby , Adam Buchbinder , "Kirill A . Shutemov" , Michal Hocko , Andrew Morton Subject: Re: [RFC PATCH 02/14] sparc64: add new fields to mmu context for shared context support Message-ID: <20161221181243.GB3311@ravnborg.org> References: <1481913337-9331-1-git-send-email-mike.kravetz@oracle.com> <1481913337-9331-3-git-send-email-mike.kravetz@oracle.com> <20161217073406.GA23567@ravnborg.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-CMAE-Score: 0 X-CMAE-Analysis: v=2.2 cv=eqGd9chX c=1 sm=1 tr=0 a=Ij76tQDYWdb01v2+RnYW5w==:117 a=Ij76tQDYWdb01v2+RnYW5w==:17 a=kj9zAlcOel0A:10 a=HhEraafUwyG73MUFe1oA:9 a=CjuIK1q_8ugA:10 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Mike. On Sun, Dec 18, 2016 at 03:33:59PM -0800, Mike Kravetz wrote: > On 12/16/2016 11:34 PM, Sam Ravnborg wrote: > > Hi Mike. > > > > On Fri, Dec 16, 2016 at 10:35:25AM -0800, Mike Kravetz wrote: > >> Add new fields to the mm_context structure to support shared context. > >> Instead of a simple context ID, add a pointer to a structure with a > >> reference count. This is needed as multiple tasks will share the > >> context ID. > > > > What are the benefits with the shared_mmu_ctx struct? > > It does not save any space in mm_context_t, and the CPU only > > supports one extra context. > > So it looks like over-engineering with all the extra administration > > required to handle it with refcount, poitners etc. > > > > what do I miss? > > Multiple tasks will share this same context ID. The first task to need > a new shared context will allocate the structure, increment the ref count > and point to it. As other tasks join the sharing, they will increment > the ref count and point to the same structure. Similarly, when tasks > no longer use the shared context ID, they will decrement the reference > count. > > The reference count is important so that we will know when the last > reference to the shared context ID is dropped. When the last reference > is dropped, then the ID can be recycled/given back to the global pool > of context IDs. > > This seemed to be the most straight forward way to implement this. This nice explanation clarified it - thanks. Could you try to include this info in the description of the struct - so it is obvious what the intention with the reference counter is. Sam