All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Derrick, Jonathan" <jonathan.derrick@intel.com>
To: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"zub@linux.fjfi.cvut.cz" <zub@linux.fjfi.cvut.cz>,
	"linux-block@vger.kernel.org" <linux-block@vger.kernel.org>,
	"sbauer@plzdonthack.me" <sbauer@plzdonthack.me>,
	"axboe@kernel.dk" <axboe@kernel.dk>
Cc: "jonas.rabenstein@studium.uni-erlangen.de" 
	<jonas.rabenstein@studium.uni-erlangen.de>
Subject: Re: [PATCH v4 12/16] block: sed-opal: unify retrieval of table columns
Date: Fri, 8 Feb 2019 22:58:38 +0000	[thread overview]
Message-ID: <1549666716.10972.59.camel@intel.com> (raw)
In-Reply-To: <1549054223-12220-13-git-send-email-zub@linux.fjfi.cvut.cz>

[-- Attachment #1: Type: text/plain, Size: 7050 bytes --]

Looks good

Reviewed-by: Jon Derrick <jonathan.derrick@intel.com>

On Fri, 2019-02-01 at 21:50 +0100, David Kozub wrote:
> From: Jonas Rabenstein <jonas.rabenstein@studium.uni-erlangen.de>
> 
> Instead of having multiple places defining the same argument list to get
> a specific column of a sed-opal table, provide a generic version and
> call it from those functions.
> 
> Signed-off-by: Jonas Rabenstein <jonas.rabenstein@studium.uni-erlangen.de>
> Reviewed-by: Scott Bauer <sbauer@plzdonthack.me>
> ---
>  block/opal_proto.h |   2 +
>  block/sed-opal.c   | 132 +++++++++++++++++----------------------------
>  2 files changed, 50 insertions(+), 84 deletions(-)
> 
> diff --git a/block/opal_proto.h b/block/opal_proto.h
> index e20be8258854..b6e352cfe982 100644
> --- a/block/opal_proto.h
> +++ b/block/opal_proto.h
> @@ -170,6 +170,8 @@ enum opal_token {
>  	OPAL_READLOCKED = 0x07,
>  	OPAL_WRITELOCKED = 0x08,
>  	OPAL_ACTIVEKEY = 0x0A,
> +	/* lockingsp table */
> +	OPAL_LIFECYCLE = 0x06,
>  	/* locking info table */
>  	OPAL_MAXRANGES = 0x04,
>  	 /* mbr control */
> diff --git a/block/sed-opal.c b/block/sed-opal.c
> index 88c84906ce98..2459ac4d523b 100644
> --- a/block/sed-opal.c
> +++ b/block/sed-opal.c
> @@ -1089,6 +1089,37 @@ static int finalize_and_send(struct opal_dev *dev, cont_fn cont)
>  	return opal_send_recv(dev, cont);
>  }
>  
> +/*
> + * request @column from table @table on device @dev. On success, the column
> + * data will be available in dev->resp->tok[4]
> + */
> +static int generic_get_column(struct opal_dev *dev, const u8 *table,
> +			      u64 column)
> +{
> +	int err;
> +
> +	err = cmd_start(dev, table, opalmethod[OPAL_GET]);
> +
> +	add_token_u8(&err, dev, OPAL_STARTLIST);
> +
> +	add_token_u8(&err, dev, OPAL_STARTNAME);
> +	add_token_u8(&err, dev, OPAL_STARTCOLUMN);
> +	add_token_u64(&err, dev, column);
> +	add_token_u8(&err, dev, OPAL_ENDNAME);
> +
> +	add_token_u8(&err, dev, OPAL_STARTNAME);
> +	add_token_u8(&err, dev, OPAL_ENDCOLUMN);
> +	add_token_u64(&err, dev, column);
> +	add_token_u8(&err, dev, OPAL_ENDNAME);
> +
> +	add_token_u8(&err, dev, OPAL_ENDLIST);
> +
> +	if (err)
> +		return err;
> +
> +	return finalize_and_send(dev, parse_and_check_status);
> +}
> +
>  static int gen_key(struct opal_dev *dev, void *data)
>  {
>  	u8 uid[OPAL_UID_LENGTH];
> @@ -1143,23 +1174,11 @@ static int get_active_key(struct opal_dev *dev, void *data)
>  	if (err)
>  		return err;
>  
> -	err = cmd_start(dev, uid, opalmethod[OPAL_GET]);
> -	add_token_u8(&err, dev, OPAL_STARTLIST);
> -	add_token_u8(&err, dev, OPAL_STARTNAME);
> -	add_token_u8(&err, dev, 3); /* startCloumn */
> -	add_token_u8(&err, dev, 10); /* ActiveKey */
> -	add_token_u8(&err, dev, OPAL_ENDNAME);
> -	add_token_u8(&err, dev, OPAL_STARTNAME);
> -	add_token_u8(&err, dev, 4); /* endColumn */
> -	add_token_u8(&err, dev, 10); /* ActiveKey */
> -	add_token_u8(&err, dev, OPAL_ENDNAME);
> -	add_token_u8(&err, dev, OPAL_ENDLIST);
> -	if (err) {
> -		pr_debug("Error building get active key command\n");
> +	err = generic_get_column(dev, uid, OPAL_ACTIVEKEY);
> +	if (err)
>  		return err;
> -	}
>  
> -	return finalize_and_send(dev, get_active_key_cont);
> +	return get_active_key_cont(dev);
>  }
>  
>  static int generic_lr_enable_disable(struct opal_dev *dev,
> @@ -1820,17 +1839,19 @@ static int activate_lsp(struct opal_dev *dev, void *data)
>  	return finalize_and_send(dev, parse_and_check_status);
>  }
>  
> -static int get_lsp_lifecycle_cont(struct opal_dev *dev)
> +/* Determine if we're in the Manufactured Inactive or Active state */
> +static int get_lsp_lifecycle(struct opal_dev *dev, void *data)
>  {
>  	u8 lc_status;
> -	int error = 0;
> +	int err;
>  
> -	error = parse_and_check_status(dev);
> -	if (error)
> -		return error;
> +	err = generic_get_column(dev, opaluid[OPAL_LOCKINGSP_UID],
> +				 OPAL_LIFECYCLE);
> +	if (err)
> +		return err;
>  
>  	lc_status = response_get_u64(&dev->parsed, 4);
> -	/* 0x08 is Manufacured Inactive */
> +	/* 0x08 is Manufactured Inactive */
>  	/* 0x09 is Manufactured */
>  	if (lc_status != OPAL_MANUFACTURED_INACTIVE) {
>  		pr_debug("Couldn't determine the status of the Lifecycle state\n");
> @@ -1840,49 +1861,19 @@ static int get_lsp_lifecycle_cont(struct opal_dev *dev)
>  	return 0;
>  }
>  
> -/* Determine if we're in the Manufactured Inactive or Active state */
> -static int get_lsp_lifecycle(struct opal_dev *dev, void *data)
> -{
> -	int err;
> -
> -	err = cmd_start(dev, opaluid[OPAL_LOCKINGSP_UID],
> -			opalmethod[OPAL_GET]);
> -
> -	add_token_u8(&err, dev, OPAL_STARTLIST);
> -
> -	add_token_u8(&err, dev, OPAL_STARTNAME);
> -	add_token_u8(&err, dev, 3); /* Start Column */
> -	add_token_u8(&err, dev, 6); /* Lifecycle Column */
> -	add_token_u8(&err, dev, OPAL_ENDNAME);
> -
> -	add_token_u8(&err, dev, OPAL_STARTNAME);
> -	add_token_u8(&err, dev, 4); /* End Column */
> -	add_token_u8(&err, dev, 6); /* Lifecycle Column */
> -	add_token_u8(&err, dev, OPAL_ENDNAME);
> -
> -	add_token_u8(&err, dev, OPAL_ENDLIST);
> -
> -	if (err) {
> -		pr_debug("Error Building GET Lifecycle Status command\n");
> -		return err;
> -	}
> -
> -	return finalize_and_send(dev, get_lsp_lifecycle_cont);
> -}
> -
> -static int get_msid_cpin_pin_cont(struct opal_dev *dev)
> +static int get_msid_cpin_pin(struct opal_dev *dev, void *data)
>  {
>  	const char *msid_pin;
>  	size_t strlen;
> -	int error = 0;
> +	int err;
>  
> -	error = parse_and_check_status(dev);
> -	if (error)
> -		return error;
> +	err = generic_get_column(dev, opaluid[OPAL_C_PIN_MSID], OPAL_PIN);
> +	if (err)
> +		return err;
>  
>  	strlen = response_get_string(&dev->parsed, 4, &msid_pin);
>  	if (!msid_pin) {
> -		pr_debug("%s: Couldn't extract PIN from response\n", __func__);
> +		pr_debug("Couldn't extract MSID_CPIN from response\n");
>  		return OPAL_INVAL_PARAM;
>  	}
>  
> @@ -1895,33 +1886,6 @@ static int get_msid_cpin_pin_cont(struct opal_dev *dev)
>  	return 0;
>  }
>  
> -static int get_msid_cpin_pin(struct opal_dev *dev, void *data)
> -{
> -	int err;
> -
> -	err = cmd_start(dev, opaluid[OPAL_C_PIN_MSID],
> -			opalmethod[OPAL_GET]);
> -
> -	add_token_u8(&err, dev, OPAL_STARTLIST);
> -	add_token_u8(&err, dev, OPAL_STARTNAME);
> -	add_token_u8(&err, dev, 3); /* Start Column */
> -	add_token_u8(&err, dev, 3); /* PIN */
> -	add_token_u8(&err, dev, OPAL_ENDNAME);
> -
> -	add_token_u8(&err, dev, OPAL_STARTNAME);
> -	add_token_u8(&err, dev, 4); /* End Column */
> -	add_token_u8(&err, dev, 3); /* Lifecycle Column */
> -	add_token_u8(&err, dev, OPAL_ENDNAME);
> -	add_token_u8(&err, dev, OPAL_ENDLIST);
> -
> -	if (err) {
> -		pr_debug("Error building Get MSID CPIN PIN command.\n");
> -		return err;
> -	}
> -
> -	return finalize_and_send(dev, get_msid_cpin_pin_cont);
> -}
> -
>  static int end_opal_session(struct opal_dev *dev, void *data)
>  {
>  	int err = 0;

[-- Attachment #2: smime.p7s --]
[-- Type: application/x-pkcs7-signature, Size: 3278 bytes --]

  parent reply	other threads:[~2019-02-08 22:59 UTC|newest]

Thread overview: 64+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-02-01 20:50 [PATCH v4 00/16] block: sed-opal: support shadow MBR done flag and write David Kozub
2019-02-01 20:50 ` [PATCH v4 01/16] block: sed-opal: fix typos and formatting David Kozub
2019-02-04 14:42   ` Christoph Hellwig
2019-02-04 20:28     ` David Kozub
2019-02-08 22:56       ` Derrick, Jonathan
2019-02-01 20:50 ` [PATCH v4 02/16] block: sed-opal: use correct macro for method length David Kozub
2019-02-04 14:43   ` Christoph Hellwig
2019-02-08 22:56   ` Derrick, Jonathan
2019-02-01 20:50 ` [PATCH v4 03/16] block: sed-opal: unify space check in add_token_* David Kozub
2019-02-04 14:44   ` Christoph Hellwig
2019-02-04 21:07     ` David Kozub
2019-02-04 21:09       ` Christoph Hellwig
2019-02-08 22:57       ` Derrick, Jonathan
2019-02-01 20:50 ` [PATCH v4 04/16] block: sed-opal: close parameter list in cmd_finalize David Kozub
2019-02-04 14:44   ` Christoph Hellwig
2019-02-08 22:57   ` Derrick, Jonathan
2019-02-01 20:50 ` [PATCH v4 05/16] block: sed-opal: unify cmd start David Kozub
2019-02-04 14:45   ` Christoph Hellwig
2019-02-08 22:57   ` Derrick, Jonathan
2019-02-01 20:50 ` [PATCH v4 06/16] block: sed-opal: unify error handling of responses David Kozub
2019-02-04 14:45   ` Christoph Hellwig
2019-02-01 20:50 ` [PATCH v4 07/16] block: sed-opal: reuse response_get_token to decrease code duplication David Kozub
2019-02-04 14:46   ` Christoph Hellwig
2019-02-08 22:57   ` Derrick, Jonathan
2019-02-01 20:50 ` [PATCH v4 08/16] block: sed-opal: print failed function address David Kozub
2019-02-04 14:46   ` Christoph Hellwig
2019-02-01 20:50 ` [PATCH v4 09/16] block: sed-opal: split generation of bytestring header and content David Kozub
2019-02-04 14:48   ` Christoph Hellwig
2019-02-08 22:58   ` Derrick, Jonathan
2019-02-01 20:50 ` [PATCH v4 10/16] block: sed-opal: add ioctl for done-mark of shadow mbr David Kozub
2019-02-04 14:52   ` Christoph Hellwig
2019-02-07 22:56     ` David Kozub
2019-02-08  0:44       ` Derrick, Jonathan
2019-02-08  1:37         ` Scott Bauer
2019-02-10 18:26         ` Scott Bauer
2019-02-10 20:25           ` David Kozub
2019-02-01 20:50 ` [PATCH v4 11/16] block: sed-opal: ioctl for writing to " David Kozub
2019-02-04 17:58   ` kbuild test robot
2019-02-08 22:58   ` Derrick, Jonathan
2019-02-01 20:50 ` [PATCH v4 12/16] block: sed-opal: unify retrieval of table columns David Kozub
2019-02-04 14:56   ` Christoph Hellwig
2019-02-08 22:58   ` Derrick, Jonathan [this message]
2019-02-01 20:50 ` [PATCH v4 13/16] block: sed-opal: check size of shadow mbr David Kozub
2019-02-08 22:58   ` Derrick, Jonathan
2019-02-10 20:05     ` David Kozub
2019-02-11 21:27       ` Derrick, Jonathan
2019-02-01 20:50 ` [PATCH v4 14/16] block: sed-opal: pass steps via argument rather than via opal_dev David Kozub
2019-02-04 14:57   ` Christoph Hellwig
2019-02-01 20:50 ` [PATCH v4 15/16] block: sed-opal: don't repeat opal_discovery0 in each steps array David Kozub
2019-02-04 15:01   ` Christoph Hellwig
2019-02-04 22:44     ` David Kozub
2019-02-08 22:59       ` Derrick, Jonathan
2019-02-10 17:46         ` David Kozub
2019-02-11 17:22           ` Derrick, Jonathan
2019-02-01 20:50 ` [PATCH v4 16/16] block: sed-opal: rename next to execute_steps David Kozub
2019-02-04 15:01   ` Christoph Hellwig
2019-02-08 22:59   ` Derrick, Jonathan
2019-02-04  8:55 ` David Kozub
2019-02-04  9:44 ` [PATCH v4 00/16] block: sed-opal: support shadow MBR done flag and write David Kozub
2019-02-04 15:04 ` Christoph Hellwig
2019-02-04 15:36   ` Scott Bauer
2019-02-04 15:44     ` Christoph Hellwig
2019-02-04 23:06   ` David Kozub
2019-02-05  6:57     ` Christoph Hellwig

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=1549666716.10972.59.camel@intel.com \
    --to=jonathan.derrick@intel.com \
    --cc=axboe@kernel.dk \
    --cc=jonas.rabenstein@studium.uni-erlangen.de \
    --cc=linux-block@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=sbauer@plzdonthack.me \
    --cc=zub@linux.fjfi.cvut.cz \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.