Received: by 2002:a25:8b12:0:0:0:0:0 with SMTP id i18csp456330ybl; Tue, 20 Aug 2019 23:49:09 -0700 (PDT) X-Google-Smtp-Source: APXvYqx97gL/GEZNk/n8a0hgxSRVzkPs+0TNqi2nwCIB9tBkaeQF2M/XPDwpye6fBJqc5ZtTjD9w X-Received: by 2002:a17:902:566:: with SMTP id 93mr32668074plf.172.1566370148946; Tue, 20 Aug 2019 23:49:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1566370148; cv=none; d=google.com; s=arc-20160816; b=aCcpHrVw60BSLdkOWY0FgemuPxjfHNwgpqf557aY5hKITr6kJCcacA4NjSqVnJakAh P9aZ4Hrx1xtoNX3gWJ+/Ufv2vLaQMf0UL/ooOeB9Dgqurc3X+Tn8LhHxaqauRm1XPufH qi0wZ0G6SQVowkEVVXZbeTz94NXzq7OWxzj+o9a0XGNGNZPHDftC93za0GG+FxG+wW92 cyRAGg8XUSmAvn9shkAwUJvY3k9vcLJo7YoTOJF75QVxFMFmF0SGJxmP3LLqBzq5ctwa i9xPdKiM38p3j0tERXTkobX8lA20T2MqeaDb7INZIL2HNcVd1Komf0aqa4RtI4/KdPe3 QnJw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:message-id:date:references :subject:cc:to:from; bh=6M04A9sRjNO3LFs5U7oTk/j4OykuXpUHimSwpDbQ9vA=; b=JWBWWbX245kaYL/WW/Ade8XaoOYTQpNKz3562rh1prhcFGTaCiTdMoePfoecv4V57Z hkufLeGo6LKY9OjzRm/PDm4yrRxz6E+zCJOf+f+/0XMMlqP2I+b1TApSP4hdZTPX8x06 ciMVAZn719Fy7o2Tw1rtBa+dNMww+fo/dMMi/MFtC8FmDtMO+1fkVzGyakHcDN/ySj63 vqFLrv09JGFtLcF05zT8Cx9vNK/yYEKTkqhkdmCVXY73SsCsXQroLgQTOmyuaGzncl3w Zrvy6Xjn6jCX7RXMTMGJtkbS5sEqwAPkDaFDx4c+pCz3+3J4qL+kfZtkmSVcVHFHcw3A VYTw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id y198si14729741pfb.98.2019.08.20.23.48.53; Tue, 20 Aug 2019 23:49:08 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727379AbfHUFnH (ORCPT + 99 others); Wed, 21 Aug 2019 01:43:07 -0400 Received: from Galois.linutronix.de ([193.142.43.55]:53723 "EHLO Galois.linutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726907AbfHUFnG (ORCPT ); Wed, 21 Aug 2019 01:43:06 -0400 Received: from localhost ([127.0.0.1] helo=vostro.local) by Galois.linutronix.de with esmtp (Exim 4.80) (envelope-from ) id 1i0JOe-0003aJ-D2; Wed, 21 Aug 2019 07:43:00 +0200 From: John Ogness To: Petr Mladek Cc: linux-kernel@vger.kernel.org, Andrea Parri , Sergey Senozhatsky , Sergey Senozhatsky , Steven Rostedt , Brendan Higgins , Peter Zijlstra , Thomas Gleixner , Linus Torvalds , Greg Kroah-Hartman Subject: Re: comments style: Re: [RFC PATCH v4 1/9] printk-rb: add a new printk ringbuffer implementation References: <20190807222634.1723-1-john.ogness@linutronix.de> <20190807222634.1723-2-john.ogness@linutronix.de> <20190820085554.deuejmxn4kbqnq7n@pathway.suse.cz> Date: Wed, 21 Aug 2019 07:42:57 +0200 Message-ID: <87h86bf50e.fsf@linutronix.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2019-08-20, Petr Mladek wrote: >> --- /dev/null >> +++ b/kernel/printk/dataring.c >> +/** >> + * _datablock_valid() - Check if given positions yield a valid data block. >> + * >> + * @dr: The associated data ringbuffer. >> + * >> + * @head_lpos: The newest data logical position. >> + * >> + * @tail_lpos: The oldest data logical position. >> + * >> + * @begin_lpos: The beginning logical position of the data block to check. >> + * >> + * @next_lpos: The logical position of the next adjacent data block. >> + * This value is used to identify the end of the data block. >> + * > > Please remove the empty lines between arguments description. They make > the comments too scattered. Your feedback is contradicting what PeterZ requested[0]. Particularly when multiple lines are involved with a description, I find the spacing helpful. I've grown to like the spacing, but I won't fight for it. >> + /* >> + * dB: >> + * >> + * When a writer has completed accessing its data block, it sets the >> + * @id thus making the data block available for invalidation. This >> + * _acquire() ensures that this task sees all data ringbuffer and >> + * descriptor values seen by the writer as @id was set. This is >> + * necessary to ensure that the data block can be correctly identified >> + * as valid (i.e. @begin_lpos, @next_lpos, @head_lpos are at least the >> + * values seen by that writer, which yielded a valid data block at >> + * that time). It is not enough to rely on the address dependency of >> + * @desc to @id because @head_lpos is not depedent on @id. This pairs >> + * with the _release() in dataring_datablock_setid(). > > This human readable description is really useful. > >> + * >> + * Memory barrier involvement: >> + * >> + * If dB reads from gA, then dC reads from fG. >> + * If dB reads from gA, then dD reads from fH. >> + * If dB reads from gA, then dE reads from fE. >> + * >> + * Note that if dB reads from gA, then dC cannot read from fC. >> + * Note that if dB reads from gA, then dD cannot read from fD. >> + * >> + * Relies on: >> + * >> + * RELEASE from fG to gA >> + * matching >> + * ADDRESS DEP. from dB to dC >> + * >> + * RELEASE from fH to gA >> + * matching >> + * ADDRESS DEP. from dB to dD >> + * >> + * RELEASE from fE to gA >> + * matching >> + * ACQUIRE from dB to dE >> + */ > > But I am not sure how much this is useful. When I was first implementing RFCv3, the "human-readable" text version was very useful for me. However, now it is the formal descriptions that I find more useful. They provide the proof and a far more detailed description. > It would take ages to decrypt all these shortcuts (signs) and > translate them into something human readable. Also it might get > outdated easily. > > That said, I haven't found yet if there was a system in all > the shortcuts. I mean if they can be descrypted easily > out of head. Also I am not familiar with the notation > of the dependencies. I'll respond to this part in Sergey's followup post. > If this is really needed then I am really scared of some barriers > that guard too many things. This one is a good example. > >> + desc = dr->getdesc(smp_load_acquire(&db->id), dr->getdesc_arg); The variable's value (in this case db->id) is doing the guarding. The barriers ensure that db->id is read first (and set last). >> + >> + /* dD: */ > > It would be great if all these shortcuts (signs) are followed with > something human readable. Few words might be enough. I'll respond to this part in Sergey's followup post. >> + next_lpos = READ_ONCE(desc->next_lpos); >> + >> + if (!_datablock_valid(dr, >> + /* dE: */ >> + atomic_long_read(&dr->head_lpos), >> + tail_lpos, begin_lpos, next_lpos)) { >> + /* Another task has already invalidated the data block. */ >> + goto out; >> + } >> + >> + >> +++ b/kernel/printk/numlist.c >> +bool numlist_read(struct numlist *nl, unsigned long id, unsigned long *seq, >> + unsigned long *next_id) >> + >> + struct nl_node *n; >> + >> + n = nl->node(id, nl->node_arg); >> + if (!n) >> + return false; >> + >> + if (seq) { >> + /* >> + * aA: >> + * >> + * Adresss dependency on @id. >> + */ > > This is too scattered. If we really need so many shortcuts (signs) > then we should find a better style. The following looks perfectly > fine to me: > > /* aA: Adresss dependency on @id. */ I'll respond to this part in Sergey's followup post. >> + *seq = READ_ONCE(n->seq); >> + } >> + >> + if (next_id) { >> + /* >> + * aB: >> + * >> + * Adresss dependency on @id. >> + */ >> + *next_id = READ_ONCE(n->next_id); >> + } >> + John Ogness [0] https://lkml.kernel.org/r/20190618111215.GO3436@hirez.programming.kicks-ass.net