public inbox for linux-ide@vger.kernel.org
 help / color / mirror / Atom feed
From: Hannes Reinecke <hare@suse.de>
To: Damien Le Moal <damien.lemoal@opensource.wdc.com>,
	linux-ide@vger.kernel.org, Jonathan Corbet <corbet@lwn.net>,
	linux-doc@vger.kernel.org
Cc: Sergey Shtylyov <s.shtylyov@omp.ru>
Subject: Re: [PATCH v2 3/5] ata: libata-core: Improve link flags forced settings
Date: Mon, 25 Apr 2022 07:56:24 +0200	[thread overview]
Message-ID: <21b1ef5b-aaf6-6baa-6580-52f3c35d2d67@suse.de> (raw)
In-Reply-To: <20220425013417.3947791-4-damien.lemoal@opensource.wdc.com>

On 4/25/22 03:34, Damien Le Moal wrote:
> Similarly to the horkage flags, introduce the force_lflag_onoff() macro
> to define struct ata_force_param entries of the force_tbl array that
> allow turning on or off a link flag using the libata.force boot
> parameter. To be consistent with naming, the macro force_lflag() is
> renamed to force_lflag_on().
> 
> Using force_lflag_onoff(), define a new force_tbl entry for the
> ATA_LFLAG_NO_DEBOUNCE_DELAY link flag, thus allowing testing if an
> adapter requires a link debounce delay or not.
> 
> Signed-off-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
> Reviewed-by: Sergey Shtylyov <s.shtylyov@omp.ru>
> ---
>   drivers/ata/libata-core.c | 32 ++++++++++++++++++++++----------
>   1 file changed, 22 insertions(+), 10 deletions(-)
> 
> diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
> index dfdb23c2bbd6..e5a0e73b39d3 100644
> --- a/drivers/ata/libata-core.c
> +++ b/drivers/ata/libata-core.c
> @@ -96,7 +96,8 @@ struct ata_force_param {
>   	unsigned long	xfer_mask;
>   	unsigned int	horkage_on;
>   	unsigned int	horkage_off;
> -	u16		lflags;
> +	u16		lflags_on;
> +	u16		lflags_off;
>   };
>   
>   struct ata_force_ent {
> @@ -386,11 +387,17 @@ static void ata_force_link_limits(struct ata_link *link)
>   		}
>   
>   		/* let lflags stack */
> -		if (fe->param.lflags) {
> -			link->flags |= fe->param.lflags;
> +		if (fe->param.lflags_on) {
> +			link->flags |= fe->param.lflags_on;
>   			ata_link_notice(link,
>   					"FORCE: link flag 0x%x forced -> 0x%x\n",
> -					fe->param.lflags, link->flags);
> +					fe->param.lflags_on, link->flags);
> +		}
> +		if (fe->param.lflags_off) {
> +			link->flags &= ~fe->param.lflags_off;
> +			ata_link_notice(link,
> +				"FORCE: link flag 0x%x cleared -> 0x%x\n",
> +				fe->param.lflags_off, link->flags);
>   		}
>   	}
>   }
> @@ -6153,8 +6160,12 @@ EXPORT_SYMBOL_GPL(ata_platform_remove_one);
>   #define force_xfer(mode, shift)				\
>   	{ #mode,	.xfer_mask	= (1UL << (shift)) }
>   
> -#define force_lflag(name, flags)			\
> -	{ #name,	.lflags		= (flags) }
> +#define force_lflag_on(name, flags)			\
> +	{ #name,	.lflags_on	= (flags) }
> +
> +#define force_lflag_onoff(name, flags)			\
> +	{ "no" #name,	.lflags_on	= (flags) },	\
> +	{ #name,	.lflags_off	= (flags) }
>   
>   #define force_horkage_on(name, flag)			\
>   	{ #name,	.horkage_on	= (flag) }
> @@ -6209,10 +6220,11 @@ static const struct ata_force_param force_tbl[] __initconst = {
>   	force_xfer(udma/133,		ATA_SHIFT_UDMA + 6),
>   	force_xfer(udma7,		ATA_SHIFT_UDMA + 7),
>   
> -	force_lflag(nohrst,		ATA_LFLAG_NO_HRST),
> -	force_lflag(nosrst,		ATA_LFLAG_NO_SRST),
> -	force_lflag(norst,		ATA_LFLAG_NO_HRST | ATA_LFLAG_NO_SRST),
> -	force_lflag(rstonce,		ATA_LFLAG_RST_ONCE),
> +	force_lflag_on(nohrst,		ATA_LFLAG_NO_HRST),
> +	force_lflag_on(nosrst,		ATA_LFLAG_NO_SRST),
> +	force_lflag_on(norst,		ATA_LFLAG_NO_HRST | ATA_LFLAG_NO_SRST),
> +	force_lflag_on(rstonce,		ATA_LFLAG_RST_ONCE),
> +	force_lflag_onoff(dbdelay,	ATA_LFLAG_NO_DEBOUNCE_DELAY),
>   
>   	force_horkage_onoff(ncq,	ATA_HORKAGE_NONCQ),
>   	force_horkage_onoff(ncqtrim,	ATA_HORKAGE_NO_NCQ_TRIM),

Hmm.

Personally, I'm not a fan of distinct 'flags_on' and 'flags_off'; I 
always wonder what does happen if one sets the same value for both ...

And do we really need this? All settings above are just simple flags 
which can be set or unset.
Sure, some flags are inverted, but still they are flags.
So why do we need the separation here?
Isn't it rather cosmetical?

Cheers,

Hannes
-- 
Dr. Hannes Reinecke                Kernel Storage Architect
hare@suse.de                              +49 911 74053 688
SUSE Software Solutions GmbH, Maxfeldstr. 5, 90409 Nürnberg
HRB 36809 (AG Nürnberg), Geschäftsführer: Felix Imendörffer

  reply	other threads:[~2022-04-25  5:56 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-04-25  1:34 [PATCH v2 0/5] libata.force improvements Damien Le Moal
2022-04-25  1:34 ` [PATCH v2 1/5] ata: libata-core: cleanup ata_device_blacklist Damien Le Moal
2022-04-25  5:49   ` Hannes Reinecke
2022-04-25  1:34 ` [PATCH v2 2/5] ata: libata-core: Refactor force_tbl definition Damien Le Moal
2022-04-25  5:51   ` Hannes Reinecke
2022-04-25  1:34 ` [PATCH v2 3/5] ata: libata-core: Improve link flags forced settings Damien Le Moal
2022-04-25  5:56   ` Hannes Reinecke [this message]
2022-04-25  6:08     ` Damien Le Moal
2022-04-25  6:10       ` Hannes Reinecke
2022-04-25  1:34 ` [PATCH v2 4/5] ata: libata-core: Allow forcing most horkage flags Damien Le Moal
2022-04-25  6:00   ` Hannes Reinecke
2022-04-25  6:15     ` Damien Le Moal
2022-04-25  6:44       ` Hannes Reinecke
2022-04-25  1:34 ` [PATCH v2 5/5] doc: admin-guide: Update libata kernel parameters Damien Le Moal
2022-04-25  1:37   ` Damien Le Moal
2022-04-25  6:01   ` Hannes Reinecke

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=21b1ef5b-aaf6-6baa-6580-52f3c35d2d67@suse.de \
    --to=hare@suse.de \
    --cc=corbet@lwn.net \
    --cc=damien.lemoal@opensource.wdc.com \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-ide@vger.kernel.org \
    --cc=s.shtylyov@omp.ru \
    /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