Received: by 2002:a05:6358:d09b:b0:dc:cd0c:909e with SMTP id jc27csp2714786rwb; Fri, 2 Dec 2022 14:02:16 -0800 (PST) X-Google-Smtp-Source: AA0mqf4ddOOx9LeyQRPSfzWkpgjA8dwPd1FzC3GTwoXv1JYzIKhY7ijECmvLbUjpMLZMxhNcuRLn X-Received: by 2002:a17:90b:1d45:b0:218:6db5:fd98 with SMTP id ok5-20020a17090b1d4500b002186db5fd98mr79391485pjb.164.1670018536591; Fri, 02 Dec 2022 14:02:16 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670018536; cv=none; d=google.com; s=arc-20160816; b=CfaCeQmAS0U7TnjV0X50vIlikP8GOB6K1Fduc/W7VnX33e30Y631qVVSySQi1IhouS Pcr5pCYddXW7mk2U0RM8crfYWa0qZGmXIibVfD8dv0DDxft/nEgZ3D4JkYmyojO3JKZp YT5azlj7sVvR3bFukyrucgbxkga+0Q6skqG/Q2NB2KZ95+Kk3Sjnzw3zd59FJ3F1w6YJ gqqHOG2o819OaHnRjnfFPCm+5LsxaMJeOKgraopcp1gtA52tj93jI0RzmAuD3CzALkP3 sCZ9op0b21Se+T4L21/bpFV5dcORP7YtJbBSBXAwbbOl4Pz6Ckx40taDGeFTgpTMu2xX UKow== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:user-agent :content-transfer-encoding:references:in-reply-to:date:cc:to:from :subject:message-id:dkim-signature; bh=DguheD/f9S21J80UEfRyncUNc3fn53UTu3Kx4IOdBY8=; b=LdlGE6Iw5rlnJRr5kj0XFMd3IjNFNcWtH0/VyuOukpfT6+KRvocUaG08LEcP+UN+iw wqZfNYJQnxZUYdHcP4/aayKbevIwZjvZRUVSEnxBE092/4Mn3n+4ObrQV/ldd2LurXP8 aUmIJCxWCVBComjHXhDtQCTqZCjJUkPoX1g7VDeC6RVA1w7ca4g4cV9NDTi6Zr0eJntd +7gshR5UC5MghoLKSc8e9Mip8axpDzMqbGLpXTvYcx+0tkAVlZ8epsq+qLgKHUtvsGFP qm0UwM1m/nqjmeli3HzK27p/4cmHDURtZIGakBjOrV7wh5ann1yR6tH7CcMsoCrEyJ1J 0HBA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b="G79X/5G6"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id b20-20020a631b14000000b00478162cf8e3si8148763pgb.81.2022.12.02.14.02.05; Fri, 02 Dec 2022 14:02:16 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b="G79X/5G6"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234611AbiLBVhL (ORCPT + 83 others); Fri, 2 Dec 2022 16:37:11 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49568 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234591AbiLBVhJ (ORCPT ); Fri, 2 Dec 2022 16:37:09 -0500 Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 91D8AEF8B5; Fri, 2 Dec 2022 13:37:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1670017028; x=1701553028; h=message-id:subject:from:to:cc:date:in-reply-to: references:content-transfer-encoding:mime-version; bh=DguheD/f9S21J80UEfRyncUNc3fn53UTu3Kx4IOdBY8=; b=G79X/5G63TmqnfKDquhvGQOrH8AipiyBITvvHcsPWJdPDZTvjz77IBxy U0eEKzzpOTY2BuH8E2/yXGcZxWDcUqBngNn7Dziy3wgZ0CiGsZLkxdqpj M8a9UdLNpRvwhfelKiSm45ikQFl18gyGfyvj/CPABLk9mVC8YKti5AjGy sR6TJrVm2RWXxuiNJvioh624PdT51llIauxU6KaZ97TtjfaG6bonhI2ps vvbZEc475NIkYoGmIdI4W3gIxKElIwTHivRDndo3VVOnenSQNsylw+ctu vHI8LH7xHJ/m7BVdmiOBFBOC0lPPBVIafxlwHb+f7Ul/sktERMF4L7mDT Q==; X-IronPort-AV: E=McAfee;i="6500,9779,10549"; a="316076195" X-IronPort-AV: E=Sophos;i="5.96,213,1665471600"; d="scan'208";a="316076195" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Dec 2022 13:37:08 -0800 X-IronPort-AV: E=McAfee;i="6500,9779,10549"; a="974060170" X-IronPort-AV: E=Sophos;i="5.96,213,1665471600"; d="scan'208";a="974060170" Received: from kcaskeyx-mobl1.amr.corp.intel.com (HELO [10.251.1.207]) ([10.251.1.207]) by fmsmga005-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Dec 2022 13:37:06 -0800 Message-ID: Subject: Re: [PATCH v2 01/18] x86/sgx: Call cond_resched() at the end of sgx_reclaim_pages() From: Kristen Carlson Accardi To: Dave Hansen , jarkko@kernel.org, dave.hansen@linux.intel.com, tj@kernel.org, linux-kernel@vger.kernel.org, linux-sgx@vger.kernel.org, cgroups@vger.kernel.org, Thomas Gleixner , Ingo Molnar , Borislav Petkov , x86@kernel.org, "H. Peter Anvin" Cc: zhiquan1.li@intel.com, Sean Christopherson Date: Fri, 02 Dec 2022 13:37:05 -0800 In-Reply-To: <37de083d-a63b-b2ff-d00a-e890a1ba5eea@intel.com> References: <20221202183655.3767674-1-kristen@linux.intel.com> <20221202183655.3767674-2-kristen@linux.intel.com> <37de083d-a63b-b2ff-d00a-e890a1ba5eea@intel.com> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable User-Agent: Evolution 3.44.4 (3.44.4-2.fc36) MIME-Version: 1.0 X-Spam-Status: No, score=-7.0 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_HI,SPF_HELO_NONE, SPF_NONE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, 2022-12-02 at 13:33 -0800, Dave Hansen wrote: > On 12/2/22 10:36, Kristen Carlson Accardi wrote: > > From: Sean Christopherson > >=20 > > In order to avoid repetition of cond_resched() in ksgxd() and > > sgx_alloc_epc_page(), move the invocation of post-reclaim > > cond_resched() > > inside sgx_reclaim_pages(). Except in the case of > > sgx_reclaim_direct(), > > sgx_reclaim_pages() is always called in a loop and is always > > followed > > by a call to cond_resched().=C2=A0 This will hold true for the EPC > > cgroup > > as well, which adds even more calls to sgx_reclaim_pages() and thus > > cond_resched(). Calls to sgx_reclaim_direct() may be performance > > sensitive. Allow sgx_reclaim_direct() to avoid the cond_resched() > > call by moving the original sgx_reclaim_pages() call to > > __sgx_reclaim_pages() and then have sgx_reclaim_pages() become a > > wrapper around that call with a cond_resched(). > >=20 > > Signed-off-by: Sean Christopherson > > > > Signed-off-by: Kristen Carlson Accardi > > Cc: Sean Christopherson > > --- > > =C2=A0arch/x86/kernel/cpu/sgx/main.c | 17 +++++++++++------ > > =C2=A01 file changed, 11 insertions(+), 6 deletions(-) > >=20 > > diff --git a/arch/x86/kernel/cpu/sgx/main.c > > b/arch/x86/kernel/cpu/sgx/main.c > > index 160c8dbee0ab..ffce6fc70a1f 100644 > > --- a/arch/x86/kernel/cpu/sgx/main.c > > +++ b/arch/x86/kernel/cpu/sgx/main.c > > @@ -287,7 +287,7 @@ static void sgx_reclaimer_write(struct > > sgx_epc_page *epc_page, > > =C2=A0 * problematic as it would increase the lock contention too much, > > which would > > =C2=A0 * halt forward progress. > > =C2=A0 */ > > -static void sgx_reclaim_pages(void) > > +static void __sgx_reclaim_pages(void) > > =C2=A0{ > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0struct sgx_epc_page *ch= unk[SGX_NR_TO_SCAN]; > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0struct sgx_backing back= ing[SGX_NR_TO_SCAN]; > > @@ -369,6 +369,12 @@ static void sgx_reclaim_pages(void) > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0} > > =C2=A0} > > =C2=A0 > > +static void sgx_reclaim_pages(void) > > +{ > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0__sgx_reclaim_pages(); > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0cond_resched(); > > +} >=20 > Why bother with the wrapper?=C2=A0 Can't we just put cond_resched() in th= e > existing sgx_reclaim_pages()? Because sgx_reclaim_direct() needs to call sgx_reclaim_pages() but not do the cond_resched(). It was this or add a boolean or something to let caller's opt out of the resched.