dri-devel.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
From: Mauro Carvalho Chehab <mchehab@kernel.org>
To: Matt Roper <matthew.d.roper@intel.com>
Cc: Alan Previn <alan.previn.teres.alexis@intel.com>,
	David Airlie <airlied@linux.ie>,
	intel-gfx@lists.freedesktop.org,
	Lucas De Marchi <lucas.demarchi@intel.com>,
	linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org,
	Chris Wilson <chris@chris-wilson.co.uk>,
	Matthew Auld <matthew.auld@intel.com>,
	Rodrigo Vivi <rodrigo.vivi@intel.com>,
	Tomas Winkler <tomas.winkler@intel.com>
Subject: Re: [Intel-gfx] [PATCH v3 19/37] drm/i915: stop using kernel-doc markups for something else
Date: Mon, 26 Sep 2022 10:25:51 +0200	[thread overview]
Message-ID: <20220926102551.55278f31@coco.lan> (raw)
In-Reply-To: <Yx9qCCmxnSM06CgH@mdroper-desk1.amr.corp.intel.com>

Em Mon, 12 Sep 2022 10:19:04 -0700
Matt Roper <matthew.d.roper@intel.com> escreveu:

> > Those *appear* to be kernel-doc markups, but they aren't, because
> > the structs themselves are not properly marked. See, for instance
> > struct intel_context.
> > 
> > scripts/kerneldoc will *only* consider what's there as a proper
> > comment if you add:
> > 
> > 	/**
> > 	 * struct intel_context - describes an i915 context
> > 	 * <add a proper description for it>
> > 	 */
> > 	struct intel_context {
> > 		union {
> > 			/** @ref: a kernel object reference */
> > 	                struct kref ref; /* no kref_get_unless_zero()! */
> > 			/** @rcu: a rcu header */
> > 	                struct rcu_head rcu;
> > 	        };
> > 		...
> > 	}
> > 
> > Describing all fields inside the struct. Just placing
> > 	/** something */
> > on some random places in the middle doesn't make it a kernel-doc.  
> 
> Right, what we have today is incomplete/incorrect.  But I think we
> should be fixing that by adding the missing documentation on the
> structure, rather than giving up and removing the kerneldoc.  The end
> goal should be to have proper generated documentation, not just silence
> the warnings while leaving the actual output incomplete.

The end goal is to have *real* kernel-doc markups, not fake ones.
We're aiming towards there, where the first step is to get rid of the
ones that just pretend to be kernel-doc without really being validated
in order to check if they produce a valid content.

See, what we have so far are just comments. Some examples from this
patch:

	/** Powers down the TV out block, and DAC0-3 */
	 #define CH7017_TV_POWER_DOWN_EN		(1 << 5)

Currently, kernel-doc doesn't have any markup for not-function defines.

What we do to document this at kernel-doc is to either:

1. convert to an enum;
2. embed it inside some struct (or function) definition.

Other examples: this is not a Kernel-doc markup:

	/** @file
	  * driver for the Chrontel 7xxx DVI chip over DVO.
	  */

Neither this:

	/**
 	 * active: Active tracker for the rq activity (inc. external) on this
 	 * intel_context object.
 	 */
 
In summary, what happens is that those "/**" tags removed on this patch are
just pretending to be Kernel-doc, but they aren't anything. See, when a newbie
starts programming in C code, without having a compiler, lots of syntax
issues will happen. When they try to compile their code, hundreds or errors
and warnings happen. That's basically what it is happening here.

See, the very basic syntax thing is missing: just like a C file requires
that all codes to be inside functions, a kernel-doc field description 
requires a kernel-doc markup for the struct/function/enum/union that
contains it.

-

Now, I fully agree that the end goal is to have proper kernel-doc markups.

Adding those require a lot of archaeological work, looking at the git
commits which introduced the changes. Patch 34/37, for instance, does
that for struct drm_i915_gem_object:

	https://lists.freedesktop.org/archives/intel-gfx/2022-September/305736.html

See, besides adding a real Kernel-doc markup for the struct:

	+/**
	+ * struct drm_i915_gem_object - describes an i915 GEM object
	+ */
	 struct drm_i915_gem_object {

It had to fix several sintax and semantic mistakes:

Typos:

	/**
-	 * @shared_resv_from: The object shares the resv from this vm.
+	 * @shares_resv_from: The object shares the resv from this vm.
 	 */

Invalid kernel-doc markups:

	 	/**
	-	 * @mem_flags - Mutable placement-related flags
	+	 * @mem_flags: Mutable placement-related flags

Kernel markups that miss that they're on an embedded struct inside
the main one (thus those are also invalid kernel-doc markups):

                /**
-                * @shrink_pin: Prevents the pages from being made visible to
+                * @mm.shrink_pin: Prevents the pages from being made visible to


Etc.

Thanks,
Mauro

  reply	other threads:[~2022-09-26  8:26 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-09  7:34 [PATCH v3 00/37] drm/i915: fix kernel-doc issues Mauro Carvalho Chehab
2022-09-09  7:34 ` [PATCH v3 01/37] drm/i915: fix kernel-doc trivial warnings on i915/*.[ch] files Mauro Carvalho Chehab
2022-09-16 14:03   ` [Intel-gfx] " Gwan-gyeong Mun
2022-09-26  9:19     ` Mauro Carvalho Chehab
2022-09-09  7:34 ` [PATCH v3 02/37] drm/i915: display: fix kernel-doc markup warnings Mauro Carvalho Chehab
2022-09-16 12:35   ` [Intel-gfx] " Gwan-gyeong Mun
2022-09-09  7:34 ` [PATCH v3 03/37] drm/i915: gt: fix some Kernel-doc issues Mauro Carvalho Chehab
2022-09-09  7:34 ` [PATCH v3 04/37] drm/i915: gvt: fix kernel-doc trivial warnings Mauro Carvalho Chehab
2022-09-09  7:34 ` [PATCH v3 05/37] drm/i915: gem: fix some Kernel-doc issues Mauro Carvalho Chehab
2022-09-09  7:34 ` [PATCH v3 06/37] drm/i915: intel_wakeref.h: fix some kernel-doc markups Mauro Carvalho Chehab
2022-09-09  7:34 ` [PATCH v3 07/37] drm/i915: i915_gem_ttm: fix a kernel-doc markup Mauro Carvalho Chehab
2022-09-09  7:34 ` [PATCH v3 08/37] drm/i915: i915_gem_ttm_pm.c: fix kernel-doc markups Mauro Carvalho Chehab
2022-09-09  7:34 ` [PATCH v3 09/37] drm/i915: gem: add kernel-doc description for some function parameters Mauro Carvalho Chehab
2022-09-09  7:34 ` [PATCH v3 10/37] drm/i915: i915_gpu_error.c: document dump_flags Mauro Carvalho Chehab
2022-09-09  7:34 ` [PATCH v3 11/37] drm/i915: document kernel-doc trivial issues Mauro Carvalho Chehab
2022-09-09  7:34 ` [PATCH v3 12/37] drm/i915: intel_dp_link_training.c: fix kernel-doc markup Mauro Carvalho Chehab
2022-09-09  7:34 ` [PATCH v3 13/37] drm/i915: intel_fb: fix a kernel-doc issue with Sphinx Mauro Carvalho Chehab
2022-09-09  7:34 ` [PATCH v3 14/37] drm/i915: skl_scaler: fix return value kernel-doc markup Mauro Carvalho Chehab
2022-09-09  7:34 ` [PATCH v3 15/37] drm/i915: intel_pm.c: fix some ascii artwork at kernel-doc Mauro Carvalho Chehab
2022-09-09  7:34 ` [PATCH v3 16/37] drm/i915: i915_gem_region.h: fix i915_gem_apply_to_region_ops doc Mauro Carvalho Chehab
2022-09-09  7:34 ` [PATCH v3 17/37] drm/i915: i915_gem_wait.c: fix a kernel-doc markup Mauro Carvalho Chehab
2022-09-12  1:22   ` Andi Shyti
2022-09-09  7:34 ` [PATCH v3 18/37] drm/i915: fix i915_gem_ttm_move.c DOC: markup Mauro Carvalho Chehab
2022-09-09  7:34 ` [PATCH v3 19/37] drm/i915: stop using kernel-doc markups for something else Mauro Carvalho Chehab
2022-09-12  1:23   ` Andi Shyti
2022-09-12 15:09   ` Matt Roper
2022-09-12 16:47     ` Mauro Carvalho Chehab
2022-09-12 17:19       ` Matt Roper
2022-09-26  8:25         ` Mauro Carvalho Chehab [this message]
2022-09-09  7:34 ` [PATCH v3 20/37] drm/i915: dvo_ch7xxx.c: use SPDX header Mauro Carvalho Chehab
2022-09-09  7:34 ` [PATCH v3 21/37] drm/i915: dvo_sil164.c: " Mauro Carvalho Chehab
2022-09-09  7:34 ` [PATCH v3 22/37] drm/i915: i915_vma_resource.c: fix some kernel-doc markups Mauro Carvalho Chehab
2022-09-09  7:34 ` [PATCH v3 23/37] drm/i915: i915_gem.c fix a kernel-doc issue Mauro Carvalho Chehab
2022-09-09  7:34 ` [PATCH v3 24/37] drm/i915: i915_scatterlist.h: fix some kernel-doc markups Mauro Carvalho Chehab
2022-09-09  7:34 ` [PATCH v3 25/37] drm/i915: i915_deps: use a shorter title markup Mauro Carvalho Chehab
2022-09-09  7:34 ` [PATCH v3 26/37] docs: gpu: i915.rst: display: add kernel-doc markups Mauro Carvalho Chehab
2022-09-09  7:34 ` [PATCH v3 27/37] docs: gpu: i915.rst: gt: add more " Mauro Carvalho Chehab
2022-09-09  9:06   ` [Intel-gfx] " Rodrigo Vivi
2022-09-26  9:45     ` Mauro Carvalho Chehab
2022-09-09  7:34 ` [PATCH v3 28/37] docs: gpu: i915.rst: GuC: " Mauro Carvalho Chehab
2022-09-09  7:34 ` [PATCH v3 29/37] docs: gpu: i915.rst: GVT: " Mauro Carvalho Chehab
2022-09-09  7:34 ` [PATCH v3 30/37] docs: gpu: i915.rst: PM: " Mauro Carvalho Chehab
2022-09-09  7:34 ` [PATCH v3 31/37] docs: gpu: i915.rst: GEM/TTM: " Mauro Carvalho Chehab
2022-09-09  7:34 ` [PATCH v3 32/37] docs: gpu: i915.rst: add the remaining kernel-doc markup files Mauro Carvalho Chehab
2022-09-09  9:10   ` [Intel-gfx] " Rodrigo Vivi
2022-09-09  7:34 ` [PATCH v3 33/37] drm/i915 i915_gem_object_types.h: document struct i915_lut_handle Mauro Carvalho Chehab
2022-09-12  1:25   ` Andi Shyti
2022-09-09  7:34 ` [PATCH v3 34/37] drm/i915: document struct drm_i915_gem_object Mauro Carvalho Chehab
2022-09-09  7:34 ` [PATCH v3 35/37] drm/i915: add descriptions for some RPM macros at intel_gt_pm.h Mauro Carvalho Chehab
2022-09-09  9:12   ` Rodrigo Vivi
2022-09-12  1:27   ` Andi Shyti
2022-09-09  7:34 ` [PATCH v3 36/37] drm/i915: add GuC functions to the documentation Mauro Carvalho Chehab
2022-09-09  7:34 ` [PATCH v3 37/37] drm/i915: be consistent with kernel-doc function declaration Mauro Carvalho Chehab
2022-09-09  9:13   ` Rodrigo Vivi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220926102551.55278f31@coco.lan \
    --to=mchehab@kernel.org \
    --cc=airlied@linux.ie \
    --cc=alan.previn.teres.alexis@intel.com \
    --cc=chris@chris-wilson.co.uk \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lucas.demarchi@intel.com \
    --cc=matthew.auld@intel.com \
    --cc=matthew.d.roper@intel.com \
    --cc=rodrigo.vivi@intel.com \
    --cc=tomas.winkler@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).