From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 78EF5C6FD1C for ; Tue, 14 Mar 2023 10:08:35 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 17D4A6B0074; Tue, 14 Mar 2023 06:08:35 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 12DD46B0075; Tue, 14 Mar 2023 06:08:35 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 01EF88E0001; Tue, 14 Mar 2023 06:08:34 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id E7C5A6B0074 for ; Tue, 14 Mar 2023 06:08:34 -0400 (EDT) Received: from smtpin15.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id B4A681203BE for ; Tue, 14 Mar 2023 10:08:34 +0000 (UTC) X-FDA: 80567079348.15.56654E2 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) by imf10.hostedemail.com (Postfix) with ESMTP id E7B1DC0019 for ; Tue, 14 Mar 2023 10:08:30 +0000 (UTC) Authentication-Results: imf10.hostedemail.com; dkim=pass header.d=quicinc.com header.s=qcppdkim1 header.b=ZimRCRGj; dmarc=pass (policy=none) header.from=quicinc.com; spf=pass (imf10.hostedemail.com: domain of quic_zhenhuah@quicinc.com designates 205.220.168.131 as permitted sender) smtp.mailfrom=quic_zhenhuah@quicinc.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1678788511; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=v8dAvwjdcl/p/jJDKWeTJ50+He1Re8qCMMafqf8Emo0=; b=p2bU5PILm6SINZ2k6jSDEhqwhkYzf4+h/PoIA3aEZZ/6pNkPbXu4n4uE55MpiQ23D1a03p kmK7/uDNcjTbptWcns29w6z/FdG/HfE98VgTCG4uV3eVckdTulfawzMY9dL+FvK9e2N4Ot UF7gSfbS6+0VRFD9q5d/X4HPwML42oo= ARC-Authentication-Results: i=1; imf10.hostedemail.com; dkim=pass header.d=quicinc.com header.s=qcppdkim1 header.b=ZimRCRGj; dmarc=pass (policy=none) header.from=quicinc.com; spf=pass (imf10.hostedemail.com: domain of quic_zhenhuah@quicinc.com designates 205.220.168.131 as permitted sender) smtp.mailfrom=quic_zhenhuah@quicinc.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1678788511; a=rsa-sha256; cv=none; b=G/bYZTc7lamCs51ZVJwTd+kIrSyP2NXQa59uJVSdGTxVhen7P1hxye1EwEcn7unzzA2Ri7 n5ZMpa9Wx2WklJv45IXBl+zjBsZPI4BlHxYhKviBdaLGvSNEICTjB7nQuD7F6rtlwj3dSV 9LyDWZ7VG9vtKUuTuxHKGiMuzSvrzd8= Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 32E3W9iN027645; Tue, 14 Mar 2023 10:08:15 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; h=message-id : date : mime-version : subject : to : cc : references : from : in-reply-to : content-type : content-transfer-encoding; s=qcppdkim1; bh=v8dAvwjdcl/p/jJDKWeTJ50+He1Re8qCMMafqf8Emo0=; b=ZimRCRGjFDYEaFFBBNQv8PkaPf0mXdSn0PjSaBOcASIGeCGsk4wAyHNeBo4cCFvzsRK7 yMt/26y5cj6LUT5MhewzHc5BFH8SeOvKVHPKuXSnlq+3IGSToF7eiKVhxjXYwOd1Lj+Y buT9ueOzZWlJxYVXOmHmFrATV1PXTHVMg9sg63ogS2OxPtplM5B9umLdl7KtFhc6YZjL zr8UVnNRRHZw45n6xk2aW3/bs/RHwCfztyMsEJ7E6UuF4ruLjjC7/nyhihhLVeqc3pdk WKDIhRzmYgb+QaoUJbg8wwZaaaot2GS4BogTFAH9V3eZFIvlJHccvygPDsc+Jdp4cVCA 3g== Received: from nalasppmta03.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3paef89fs1-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 14 Mar 2023 10:08:14 +0000 Received: from nalasex01a.na.qualcomm.com (nalasex01a.na.qualcomm.com [10.47.209.196]) by NALASPPMTA03.qualcomm.com (8.17.1.5/8.17.1.5) with ESMTPS id 32EA8ECg029800 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 14 Mar 2023 10:08:14 GMT Received: from [10.239.132.245] (10.80.80.8) by nalasex01a.na.qualcomm.com (10.47.209.196) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.41; Tue, 14 Mar 2023 03:08:09 -0700 Message-ID: Date: Tue, 14 Mar 2023 18:08:07 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.8.0 Subject: Re: [PATCH v8] mm,kfence: decouple kfence from page granularity mapping judgement Content-Language: en-US To: Pavan Kondeti CC: , , , , , , , , , , , , , , , , References: <1678777502-6933-1-git-send-email-quic_zhenhuah@quicinc.com> <20230314083645.GA556474@hu-pkondeti-hyd.qualcomm.com> From: Zhenhua Huang In-Reply-To: <20230314083645.GA556474@hu-pkondeti-hyd.qualcomm.com> Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [10.80.80.8] X-ClientProxiedBy: nasanex01b.na.qualcomm.com (10.46.141.250) To nalasex01a.na.qualcomm.com (10.47.209.196) X-QCInternal: smtphost X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-ORIG-GUID: 8Q0_-CrbR7Rk1ABatQiHIqTXb0znQD_R X-Proofpoint-GUID: 8Q0_-CrbR7Rk1ABatQiHIqTXb0znQD_R X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.942,Hydra:6.0.573,FMLib:17.11.170.22 definitions=2023-03-14_04,2023-03-14_02,2023-02-09_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 bulkscore=0 adultscore=0 suspectscore=0 mlxlogscore=999 malwarescore=0 mlxscore=0 impostorscore=0 clxscore=1015 spamscore=0 phishscore=0 priorityscore=1501 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2303140087 X-Rspamd-Queue-Id: E7B1DC0019 X-Rspamd-Server: rspam09 X-Rspam-User: X-Stat-Signature: mwjtxhf7oyoecmo5upywyfq3jituqx75 X-HE-Tag: 1678788510-410357 X-HE-Meta: U2FsdGVkX1+5DdoRNceCatr7rPR1p6k8SvFeQR1SyRm2cPF0rZXAs6gQSwxcNZly+Ag2h7li01YW03qdty66tG9lWHzZ8Roa4MQelMZrh2lZ6GhvgfI3O4/LBT1X1VpecDtY+CTXzvB02exw2ak5eLnd4C872Jwxv/DLO4jZRJFoOzYjNVi96o5SYVuZKPgyea58kbQ7OtPe7/iL8TTYTwVflaNdR0F9Csfaez9KiEvyzJY27pFzw/PuI44/yvHjcKyBMUVosznHxYwvuTUzngDruMumEDVtj2rOlX9BS+ojmEIUM8qIQeHIga4Cv8objBIKoL9UgNxPmutgY3cy+wLMETVKaDsz14nok/EcsarLvVpHoNyTf59G37AjwdPA/cpFS9L7JId6GfrilVCVpks9ZI0nPsAkRdN/Ho+6rwOaa+1v+aMiRET+7Q///CtOJ92FM4zZpSw8IbB0d0bLmusCIxD7ycD2fqiRjp7qEE4aUpcddf48IHXAJHxXbhtU3Qa7Sv9UsLAf/uutFlVba/5KTDCFCeOuCcFSaaphuSpG40f0dQxRsV07HCkpmWsJUzBgMTRc26EAFdzX2JA73A5cJktjiwRVET4rfsrVCtMF/yO6L686Sox7DJkKEvRJbpnuKdo2Gveswgk7odsBsP3MXcLjjJfioyO/V9/ZPvr/BRXYRGLnRU4Mx+gXbVFtQafo0qrQ1Mo33HVHD7Zx+76AOSlk613phGHbo9vmErnqbRrm5ZV8vKNMg7tjfHb03CO/gZKNWGci1SQdFsf7xqbYbD1nrzEf55BpJeReZtYj/PxOTcEE9fQTKx+5VhP+wffx5Fs47etzoxEs790z2HdTkzzj/LSpuoMZ5JrY+gmGAmovG5EfZfcQ1fJpGlKo+RtWnDFglaLNOTDkO5ptWESaTaNSeBx77xnrmlahANwmPUo6+DIcofb1rkd0qXhenPDGAHwJWKmr0sAk/Bg c7Oae2Fg Vjbhr/GmEf0AlIvwp3fJ3T6Bai5SL7i0s2hmFpdaaKmJNZxAqKx/CC9QroGg7pVXdfjh/vFuGw+2gzh9CDAlht9sVxTTppD3DFA6yRoTreScQnI/D3W5Il3lYHrUpHlBhQ3rV15uWnkKOO8+N9og2dhrnQC/EA9qQYP7RVyFnPJfXbaTeudOcYRlYkqY43xuk8FvnWP81pJawb6ff5Wh6FwIbstKrq66+0mMGilIXVKlOrK46L4NVBLGrmFJ8wejbjKXHgjV1xYLRmGhxUMkkriyemlJsxVMS1A0mjyucDDTnoIjMmkkH3IMg3ehbyAwH03VZbKgOC/itzXSJ50b9IvZKM32BFQadjYGUjlf6zxnARTTyavZ10+oImOiGfqko5vOtME7HSR4XkFn5gioow4LD+w== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On 2023/3/14 16:36, Pavan Kondeti wrote: > On Tue, Mar 14, 2023 at 03:05:02PM +0800, Zhenhua Huang wrote: >> Kfence only needs its pool to be mapped as page granularity, if it is >> inited early. Previous judgement was a bit over protected. From [1], Mark >> suggested to "just map the KFENCE region a page granularity". So I >> decouple it from judgement and do page granularity mapping for kfence >> pool only. Need to be noticed that late init of kfence pool still requires >> page granularity mapping. >> >> Page granularity mapping in theory cost more(2M per 1GB) memory on arm64 >> platform. Like what I've tested on QEMU(emulated 1GB RAM) with >> gki_defconfig, also turning off rodata protection: >> Before: >> [root@liebao ]# cat /proc/meminfo >> MemTotal: 999484 kB >> After: >> [root@liebao ]# cat /proc/meminfo >> MemTotal: 1001480 kB >> >> To implement this, also relocate the kfence pool allocation before the >> linear mapping setting up, arm64_kfence_alloc_pool is to allocate phys >> addr, __kfence_pool is to be set after linear mapping set up. >> >> LINK: [1] https://lore.kernel.org/linux-arm-kernel/Y+IsdrvDNILA59UN@FVFF77S0Q05N/ >> Suggested-by: Mark Rutland >> Signed-off-by: Zhenhua Huang >> --- >> arch/arm64/include/asm/kfence.h | 2 ++ >> arch/arm64/mm/mmu.c | 44 +++++++++++++++++++++++++++++++++++++++++ >> arch/arm64/mm/pageattr.c | 9 +++++++-- >> include/linux/kfence.h | 8 ++++++++ >> mm/kfence/core.c | 9 +++++++++ >> 5 files changed, 70 insertions(+), 2 deletions(-) >> >> diff --git a/arch/arm64/include/asm/kfence.h b/arch/arm64/include/asm/kfence.h >> index aa855c6..f1f9ca2d 100644 >> --- a/arch/arm64/include/asm/kfence.h >> +++ b/arch/arm64/include/asm/kfence.h >> @@ -10,6 +10,8 @@ >> >> #include >> >> +extern phys_addr_t early_kfence_pool; >> + >> static inline bool arch_kfence_init_pool(void) { return true; } >> >> static inline bool kfence_protect_page(unsigned long addr, bool protect) >> diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c >> index 6f9d889..7fbf2ed 100644 >> --- a/arch/arm64/mm/mmu.c >> +++ b/arch/arm64/mm/mmu.c >> @@ -24,6 +24,7 @@ >> #include >> #include >> #include >> +#include >> >> #include >> #include >> @@ -38,6 +39,7 @@ >> #include >> #include >> #include >> +#include >> >> #define NO_BLOCK_MAPPINGS BIT(0) >> #define NO_CONT_MAPPINGS BIT(1) >> @@ -525,6 +527,33 @@ static int __init enable_crash_mem_map(char *arg) >> } >> early_param("crashkernel", enable_crash_mem_map); >> >> +#ifdef CONFIG_KFENCE >> + >> +static phys_addr_t arm64_kfence_alloc_pool(void) >> +{ >> + phys_addr_t kfence_pool; >> + >> + if (!kfence_sample_interval) >> + return 0; >> + > > Are you sure that kernel commandline param are processed this early? > AFAICS, start_kernel()->parse_args() process the kernel arguments. We > are here before that. without your patch, mm_init() which takes care of > allocating kfence memory is called after parse_args(). > > Can you check your patch with kfence.sample_interval=0 appended to > kernel commandline? > Thanks Pavan. I have tried and you're correct. Previously I thought it's parsed by the way: setup_arch()->parse_early_param(earlier)->parse_early_options-> do_early_param Unfortunately seems not take effect. Then the only way left is we always allocate the kfence pool early? as we can't get sample_invertal at this early stage. >> + kfence_pool = memblock_phys_alloc(KFENCE_POOL_SIZE, PAGE_SIZE); >> + if (!kfence_pool) >> + pr_err("failed to allocate kfence pool\n"); >> + > For whatever reason, if this allocation fails, what should be done? We > end up not calling kfence_set_pool(). kfence_alloc_pool() is going to > attempt allocation again but we did not setup page granularity. That > means, we are enabling KFENCE without meeting pre-conditions. Can you > check this? In this scenario, early_kfence_pool should be false(0) and we will end up using page granularity mapping? should be fine IMO. > >> + return kfence_pool; >> +} >> + > > Thanks, > Pavan Thanks, Zhenhua