Intel-XE Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: "Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>
To: "Michael J. Ruhl" <michael.j.ruhl@intel.com>
Cc: platform-driver-x86@vger.kernel.org,
	intel-xe@lists.freedesktop.org,
	 Hans de Goede <hdegoede@redhat.com>,
	lucas.demarchi@intel.com,  rodrigo.vivi@intel.com,
	thomas.hellstrom@linux.intel.com,  airlied@gmail.com,
	simona@ffwll.ch, david.e.box@linux.intel.com
Subject: Re: [PATCH v4 08/10] platform/x86/intel/pmt: add register access helpers
Date: Wed, 11 Jun 2025 13:52:24 +0300 (EEST)	[thread overview]
Message-ID: <8baebd44-971f-dd79-cede-1e8fd5965956@linux.intel.com> (raw)
In-Reply-To: <20250610211225.1085901-9-michael.j.ruhl@intel.com>

On Tue, 10 Jun 2025, Michael J. Ruhl wrote:

> The control register is used in a read/modify/write pattern.
> The status register is used in a read/check bit pattern.
> 
> Add helpers to eliminate common code.
> 
> Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
> ---
>  drivers/platform/x86/intel/pmt/crashlog.c | 58 +++++++++++------------
>  1 file changed, 29 insertions(+), 29 deletions(-)
> 
> diff --git a/drivers/platform/x86/intel/pmt/crashlog.c b/drivers/platform/x86/intel/pmt/crashlog.c
> index 99f0e85f2de6..e11865686f2a 100644
> --- a/drivers/platform/x86/intel/pmt/crashlog.c
> +++ b/drivers/platform/x86/intel/pmt/crashlog.c
> @@ -63,20 +63,40 @@ struct pmt_crashlog_priv {
>  /*
>   * I/O
>   */
> -static bool pmt_crashlog_complete(struct intel_pmt_entry *entry)
> +#define SET	true
> +#define CLEAR	false

There's a risk of namespace collisions if using too generic names.

> +static void read_modify_write(struct intel_pmt_entry *entry, u32 bit, bool set)
>  {
> -	u32 control = readl(entry->disc_table + CONTROL_OFFSET);
> +	u32 reg = readl(entry->disc_table + CONTROL_OFFSET);
> +
> +	reg &= ~CRASHLOG_FLAG_TRIGGER_MASK;
> +
> +	if (set)
> +		reg |= bit;
> +	else
> +		reg &= bit;
> +
> +	writel(reg, entry->disc_table + CONTROL_OFFSET);
> +}
> +
> +static bool read_check(struct intel_pmt_entry *entry, u32 bit)

Despite being static, I'd prefer these to have prefixes. With the prefixes 
reading the calling code, it's trivial to discern it's an driver internal 
function whereas generic names likes will not convey the scope 
information.

> +{
> +	u32 reg = readl(entry->disc_table + CONTROL_OFFSET);
> +
> +	return !!(reg & bit);
> +}
>  
> +static bool pmt_crashlog_complete(struct intel_pmt_entry *entry)
> +{
>  	/* return current value of the crashlog complete flag */
> -	return !!(control & CRASHLOG_FLAG_TRIGGER_COMPLETE);
> +	return read_check(entry, CRASHLOG_FLAG_TRIGGER_COMPLETE);
>  }
>  
>  static bool pmt_crashlog_disabled(struct intel_pmt_entry *entry)
>  {
> -	u32 control = readl(entry->disc_table + CONTROL_OFFSET);
> -
>  	/* return current value of the crashlog disabled flag */
> -	return !!(control & CRASHLOG_FLAG_DISABLE);
> +	return read_check(entry, CRASHLOG_FLAG_DISABLE);
>  }
>  
>  static bool pmt_crashlog_supported(struct intel_pmt_entry *entry)
> @@ -97,37 +117,17 @@ static bool pmt_crashlog_supported(struct intel_pmt_entry *entry)
>  static void pmt_crashlog_set_disable(struct intel_pmt_entry *entry,
>  				     bool disable)
>  {
> -	u32 control = readl(entry->disc_table + CONTROL_OFFSET);
> -
> -	/* clear trigger bits so we are only modifying disable flag */
> -	control &= ~CRASHLOG_FLAG_TRIGGER_MASK;
> -
> -	if (disable)
> -		control |= CRASHLOG_FLAG_DISABLE;
> -	else
> -		control &= ~CRASHLOG_FLAG_DISABLE;
> -
> -	writel(control, entry->disc_table + CONTROL_OFFSET);
> +	read_modify_write(entry, CRASHLOG_FLAG_DISABLE, disable);
>  }
>  
>  static void pmt_crashlog_set_clear(struct intel_pmt_entry *entry)
>  {
> -	u32 control = readl(entry->disc_table + CONTROL_OFFSET);
> -
> -	control &= ~CRASHLOG_FLAG_TRIGGER_MASK;
> -	control |= CRASHLOG_FLAG_TRIGGER_CLEAR;
> -
> -	writel(control, entry->disc_table + CONTROL_OFFSET);
> +	read_modify_write(entry, CRASHLOG_FLAG_TRIGGER_CLEAR, SET);
>  }
>  
>  static void pmt_crashlog_set_execute(struct intel_pmt_entry *entry)
>  {
> -	u32 control = readl(entry->disc_table + CONTROL_OFFSET);
> -
> -	control &= ~CRASHLOG_FLAG_TRIGGER_MASK;
> -	control |= CRASHLOG_FLAG_TRIGGER_EXECUTE;
> -
> -	writel(control, entry->disc_table + CONTROL_OFFSET);
> +	read_modify_write(entry, CRASHLOG_FLAG_TRIGGER_EXECUTE, SET);
>  }
>  
>  /*
> 

-- 
 i.


  reply	other threads:[~2025-06-11 10:52 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-06-10 21:12 [PATCH v4 00/10] Crashlog Type1 Version2 support Michael J. Ruhl
2025-06-10 21:12 ` [PATCH v4 01/10] platform/x86/intel/pmt: fix a crashlog NULL pointer access Michael J. Ruhl
2025-06-11  8:12   ` Upadhyay, Tejas
2025-06-11 10:42   ` Ilpo Järvinen
2025-06-11 12:40     ` Ruhl, Michael J
2025-06-11 13:29       ` Ilpo Järvinen
2025-06-10 21:12 ` [PATCH v4 02/10] drm/xe: Correct BMG VSEC header sizing Michael J. Ruhl
2025-06-10 21:12 ` [PATCH v4 03/10] platform/x86/intel/pmt: white space cleanup Michael J. Ruhl
2025-06-10 21:12 ` [PATCH v4 04/10] platform/x86/intel/pmt: use guard(mutex) Michael J. Ruhl
2025-06-10 21:12 ` [PATCH v4 05/10] platform/x86/intel/pmt: re-order trigger logic Michael J. Ruhl
2025-06-11 10:46   ` Ilpo Järvinen
2025-06-10 21:12 ` [PATCH v4 06/10] platform/x86/intel/pmt: correct types Michael J. Ruhl
2025-06-11 10:46   ` Ilpo Järvinen
2025-06-10 21:12 ` [PATCH v4 07/10] platform/x86/intel/pmt: decouple sysfs and namespace Michael J. Ruhl
2025-06-10 21:12 ` [PATCH v4 08/10] platform/x86/intel/pmt: add register access helpers Michael J. Ruhl
2025-06-11 10:52   ` Ilpo Järvinen [this message]
2025-06-10 21:12 ` [PATCH v4 09/10] platform/x86/intel/pmt: use a version struct Michael J. Ruhl
2025-06-11 11:05   ` Ilpo Järvinen
2025-06-10 21:12 ` [PATCH v4 10/10] platform/x86/intel/pmt: support BMG crashlog Michael J. Ruhl
2025-06-10 21:18 ` ✓ CI.Patch_applied: success for Crashlog Type1 Version2 support (rev4) Patchwork
2025-06-10 21:19 ` ✓ CI.checkpatch: " Patchwork
2025-06-10 21:20 ` ✓ CI.KUnit: " Patchwork
2025-06-10 21:31 ` ✓ CI.Build: " Patchwork
2025-06-10 21:33 ` ✓ CI.Hooks: " Patchwork
2025-06-10 21:35 ` ✓ CI.checksparse: " Patchwork
2025-06-10 22:01 ` ✓ Xe.CI.BAT: " Patchwork
2025-06-11  4:00 ` ✗ Xe.CI.Full: failure " Patchwork

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=8baebd44-971f-dd79-cede-1e8fd5965956@linux.intel.com \
    --to=ilpo.jarvinen@linux.intel.com \
    --cc=airlied@gmail.com \
    --cc=david.e.box@linux.intel.com \
    --cc=hdegoede@redhat.com \
    --cc=intel-xe@lists.freedesktop.org \
    --cc=lucas.demarchi@intel.com \
    --cc=michael.j.ruhl@intel.com \
    --cc=platform-driver-x86@vger.kernel.org \
    --cc=rodrigo.vivi@intel.com \
    --cc=simona@ffwll.ch \
    --cc=thomas.hellstrom@linux.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