From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from fanzine2.igalia.com (fanzine.igalia.com [178.60.130.6]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1D5B31F9F62 for ; Wed, 8 Jan 2025 16:05:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=178.60.130.6 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736352313; cv=none; b=gSi1mm/265Mc3ITe17TG1O7VFlxSB+OWLygwzSqea4PDEgHNQUssEouZD4K9Z+XEcLFdLsJT2Hkz1wnpiB/N0AVWJVXKyywFRXJiuJ7LZ+dcKTSiUMxLwAhhKizKQHjIkigXXlJiyFdbubU4DKR6wi762DMqKfA9EPZBx01lLjo= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736352313; c=relaxed/simple; bh=Dpqn38+pM/jE78cLf7brNbTEpINEDBkaBXXfrRfkvk8=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=rGEo4E+/XHpoa//KsM3XXxyOW51HLsIbBgyQpV8CsPQd+mNSRqEOVFOlrgWh54HsgDhWLocNsttVz+FB2ziO4r9etbzlTmILTO4UW+trLDl63HNNJ/pGm3VhgiYsjCYUxKjpMMRTT3+ydEz+kqImzE11tz3WUyQL69q9OaXJwaY= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=igalia.com; spf=pass smtp.mailfrom=igalia.com; dkim=pass (2048-bit key) header.d=igalia.com header.i=@igalia.com header.b=Jt6O2iXD; arc=none smtp.client-ip=178.60.130.6 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=igalia.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=igalia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=igalia.com header.i=@igalia.com header.b="Jt6O2iXD" DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=igalia.com; s=20170329; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:From: References:Cc:To:Subject:MIME-Version:Date:Message-ID:Sender:Reply-To: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=Syi1BqX3kYmneNyN2vFTPOx2r+Z/wmUtLfKpX4lqzkQ=; b=Jt6O2iXDjyu1Cd4bQNlvHd0ny5 v6y+xAYTBkow32VEBNyuIfuYKJlBQyCsDlcZg/29XHLFpQx0avKfsZVfilAiAsOgtn4ByrYSJk/ld DWluYophuXMZxmWv80X9SqPLUXAxrNMKuX1ae4Uj13ZrmLSHqDoIlBe9XG6iJwtuQuMOdiljM1mpg qYtdQK4kIojT2NJDuGYbsefGeq1L+V8qYRWXholqLN+MwYxnBR8adRX/Iui7+FWfl5yS2ZKnoqe9b FIhly1Ex6j2xjDU9ZR2n/Bm9R64tXpxLx4lFLa8wzxQd13SCCeMStFAatWZ3JBuByrdy2D08LDFAN RaPdfCAA==; Received: from [58.29.143.236] (helo=[192.168.1.6]) by fanzine2.igalia.com with esmtpsa (Cipher TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_128_GCM:128) (Exim) id 1tVYYA-00DBzN-TX; Wed, 08 Jan 2025 17:04:55 +0100 Message-ID: Date: Thu, 9 Jan 2025 01:04:49 +0900 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v7 2/6] sched_ext: Implement scx_bpf_now() To: Peter Zijlstra , Changwoo Min Cc: tj@kernel.org, void@manifault.com, arighi@nvidia.com, mingo@redhat.com, kernel-dev@igalia.com, linux-kernel@vger.kernel.org References: <20241230095625.114363-1-changwoo@igalia.com> <20241230095625.114363-3-changwoo@igalia.com> <20250108085026.GC23315@noisy.programming.kicks-ass.net> From: Changwoo Min Content-Language: en-US, ko-KR, en-US-large, ko In-Reply-To: <20250108085026.GC23315@noisy.programming.kicks-ass.net> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hello, On 25. 1. 8. 17:50, Peter Zijlstra wrote: > > That is, I rather think you need: > >> +static inline void scx_rq_clock_update(struct rq *rq, u64 clock) >> +{ >> + if (!scx_enabled()) >> + return; >> + WRITE_ONCE(rq->scx.clock, clock); >> + smp_store_release(&rq->scx.flags, rq->scx.flags | SCX_RQ_CLK_VALID); >> +} > > and: > > if (smp_load_acquire(&rq->scx.flags) & SCX_RQ_CLK_VALID) { >> + /* >> + * If the rq clock is valid, use the cached rq clock. >> + * >> + * Note that scx_bpf_now() is re-entrant between a process >> + * context and an interrupt context (e.g., timer interrupt). >> + * However, we don't need to consider the race between them >> + * because such race is not observable from a caller. >> + */ >> + clock = READ_ONCE(rq->scx.clock); > > Such that if you ovbserve VALID, you must then also observe the clock. Thank you for catching this out! I will change it as suggested in the next version. Regards, Changwoo Min