Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1608294 > unrolled thread
| Started by | Jarkko Sakkinen <jarkko.sakkinen@iki.fi> |
|---|---|
| First post | 2017-03-24 11:20 +0100 |
| Last post | 2017-03-27 07:20 +0200 |
| Articles | 11 — 3 participants |
Back to article view | Back to linux.kernel
[PATCH v4] tpm_crb: request and relinquish locality 0 Jarkko Sakkinen <jarkko.sakkinen@iki.fi> - 2017-03-24 11:20 +0100
Re: [PATCH v4] tpm_crb: request and relinquish locality 0 Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> - 2017-03-24 11:20 +0100
Re: [PATCH v4] tpm_crb: request and relinquish locality 0 Jerry Snitselaar <jsnitsel@redhat.com> - 2017-03-25 13:30 +0100
Re: [PATCH v4] tpm_crb: request and relinquish locality 0 Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> - 2017-03-25 21:00 +0100
Re: [PATCH v4] tpm_crb: request and relinquish locality 0 Jerry Snitselaar <jsnitsel@redhat.com> - 2017-03-24 19:30 +0100
Re: [PATCH v4] tpm_crb: request and relinquish locality 0 Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> - 2017-03-25 21:00 +0100
Re: [PATCH v4] tpm_crb: request and relinquish locality 0 Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> - 2017-03-26 14:10 +0200
Re: [PATCH v4] tpm_crb: request and relinquish locality 0 Jerry Snitselaar <jsnitsel@redhat.com> - 2017-03-26 18:50 +0200
Re: [PATCH v4] tpm_crb: request and relinquish locality 0 Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> - 2017-03-26 22:00 +0200
Re: [PATCH v4] tpm_crb: request and relinquish locality 0 Jerry Snitselaar <jsnitsel@redhat.com> - 2017-03-27 01:00 +0200
Re: [PATCH v4] tpm_crb: request and relinquish locality 0 Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> - 2017-03-27 07:20 +0200
| From | Jarkko Sakkinen <jarkko.sakkinen@iki.fi> |
|---|---|
| Date | 2017-03-24 11:20 +0100 |
| Subject | [PATCH v4] tpm_crb: request and relinquish locality 0 |
| Message-ID | <touu5-8u8-9@gated-at.bofh.it> |
This commit adds support for requesting and relinquishing locality 0 in
tpm_crb for the course of command transmission.
In order to achieve this, two new callbacks are added to struct
tpm_class_ops:
- request_locality
- relinquish_locality
With CRB interface you first set either requestAccess or relinquish bit
from TPM_LOC_CTRL_x register and then wait for locAssigned and
tpmRegValidSts bits to be set in the TPM_LOC_STATE_x register.
The reason why were are doing this is to make sure that the driver
will work properly with Intel TXT that uses locality 2. There's no
explicit guarantee that it would relinquish this locality. In more
general sense this commit enables tpm_crb to be a well behaving
citizen in a multi locality environment.
Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
---
v2:
- TPM driver level calllbacks
v3:
- Call ops->relinquish_locality only if ops->request_locality has been
successful.
- Do not reserve locality in nested tpm_transmit calls.
- Check for tpmRegValidSts to make sure that the value in TPM_LOC_STATE_x is
stable.
v4:
- Removed tpm_tis_core changes. It needs to be done separately. It will be
postponed to 4.13.
- Store locality to struct tpm_chip while active.
drivers/char/tpm/tpm-chip.c | 1 +
drivers/char/tpm/tpm-interface.c | 13 +++++++++++++
drivers/char/tpm/tpm.h | 3 +++
drivers/char/tpm/tpm_crb.c | 41 ++++++++++++++++++++++++++++++++++++++++
include/linux/tpm.h | 3 ++-
5 files changed, 60 insertions(+), 1 deletion(-)
diff --git a/drivers/char/tpm/tpm-chip.c b/drivers/char/tpm/tpm-chip.c
index aade699..a321bd5 100644
--- a/drivers/char/tpm/tpm-chip.c
+++ b/drivers/char/tpm/tpm-chip.c
@@ -231,6 +231,7 @@ struct tpm_chip *tpm_chip_alloc(struct device *pdev,
goto out;
}
+ chip->locality = -1;
return chip;
out:
diff --git a/drivers/char/tpm/tpm-interface.c b/drivers/char/tpm/tpm-interface.c
index 95c6f98..1815666 100644
--- a/drivers/char/tpm/tpm-interface.c
+++ b/drivers/char/tpm/tpm-interface.c
@@ -384,6 +384,7 @@ ssize_t tpm_transmit(struct tpm_chip *chip, struct tpm_space *space,
ssize_t len = 0;
u32 count, ordinal;
unsigned long stop;
+ bool need_locality = chip->locality == -1;
if (!tpm_validate_command(chip, buf, bufsiz))
return -EINVAL;
@@ -407,6 +408,13 @@ ssize_t tpm_transmit(struct tpm_chip *chip, struct tpm_space *space,
if (chip->dev.parent)
pm_runtime_get_sync(chip->dev.parent);
+ if (need_locality && chip->ops->request_locality) {
+ rc = chip->ops->request_locality(chip, 0);
+ if (rc < 0)
+ goto out_no_locality;
+ chip->locality = rc;
+ }
+
rc = tpm2_prepare_space(chip, space, ordinal, buf);
if (rc)
goto out;
@@ -466,6 +474,11 @@ ssize_t tpm_transmit(struct tpm_chip *chip, struct tpm_space *space,
rc = tpm2_commit_space(chip, space, ordinal, buf, &len);
out:
+ if (need_locality && chip->ops->relinquish_locality) {
+ chip->ops->relinquish_locality(chip, 0);
+ chip->locality = -1;
+ }
+out_no_locality:
if (chip->dev.parent)
pm_runtime_put_sync(chip->dev.parent);
diff --git a/drivers/char/tpm/tpm.h b/drivers/char/tpm/tpm.h
index 5eacb3f..4b4c8de 100644
--- a/drivers/char/tpm/tpm.h
+++ b/drivers/char/tpm/tpm.h
@@ -228,6 +228,9 @@ struct tpm_chip {
struct tpm_space work_space;
u32 nr_commands;
u32 *cc_attrs_tbl;
+
+ /* active locality */
+ int locality;
};
#define to_tpm_chip(d) container_of(d, struct tpm_chip, dev)
diff --git a/drivers/char/tpm/tpm_crb.c b/drivers/char/tpm/tpm_crb.c
index 9f31609..d91e47d 100644
--- a/drivers/char/tpm/tpm_crb.c
+++ b/drivers/char/tpm/tpm_crb.c
@@ -34,6 +34,16 @@ enum crb_defaults {
CRB_ACPI_START_INDEX = 1,
};
+enum crb_loc_ctrl {
+ CRB_LOC_CTRL_REQUEST_ACCESS = BIT(0),
+ CRB_LOC_CTRL_RELINQUISH = BIT(1),
+};
+
+enum crb_loc_state {
+ CRB_LOC_STATE_LOC_ASSIGNED = BIT(1),
+ CRB_LOC_STATE_TPM_REG_VALID_STS = BIT(7),
+};
+
enum crb_ctrl_req {
CRB_CTRL_REQ_CMD_READY = BIT(0),
CRB_CTRL_REQ_GO_IDLE = BIT(1),
@@ -172,6 +182,35 @@ static int __maybe_unused crb_cmd_ready(struct device *dev,
return 0;
}
+static int crb_request_locality(struct tpm_chip *chip, int loc)
+{
+ struct crb_priv *priv = dev_get_drvdata(&chip->dev);
+ u32 value = CRB_LOC_STATE_LOC_ASSIGNED |
+ CRB_LOC_STATE_TPM_REG_VALID_STS;
+
+ if (!priv->regs_h)
+ return 0;
+
+ iowrite32(CRB_LOC_CTRL_REQUEST_ACCESS, &priv->regs_h->loc_ctrl);
+ if (!crb_wait_for_reg_32(&priv->regs_h->loc_state, value, value,
+ TPM2_TIMEOUT_C)) {
+ dev_warn(&chip->dev, "TPM_LOC_STATE_x.requestAccess timed out\n");
+ return -ETIME;
+ }
+
+ return 0;
+}
+
+static void crb_relinquish_locality(struct tpm_chip *chip, int loc)
+{
+ struct crb_priv *priv = dev_get_drvdata(&chip->dev);
+
+ if (!priv->regs_h)
+ return;
+
+ iowrite32(CRB_LOC_CTRL_RELINQUISH, &priv->regs_h->loc_ctrl);
+}
+
static u8 crb_status(struct tpm_chip *chip)
{
struct crb_priv *priv = dev_get_drvdata(&chip->dev);
@@ -278,6 +317,8 @@ static const struct tpm_class_ops tpm_crb = {
.send = crb_send,
.cancel = crb_cancel,
.req_canceled = crb_req_canceled,
+ .request_locality = crb_request_locality,
+ .relinquish_locality = crb_relinquish_locality,
.req_complete_mask = CRB_DRV_STS_COMPLETE,
.req_complete_val = CRB_DRV_STS_COMPLETE,
};
diff --git a/include/linux/tpm.h b/include/linux/tpm.h
index da158f0..5a090f5 100644
--- a/include/linux/tpm.h
+++ b/include/linux/tpm.h
@@ -48,7 +48,8 @@ struct tpm_class_ops {
u8 (*status) (struct tpm_chip *chip);
bool (*update_timeouts)(struct tpm_chip *chip,
unsigned long *timeout_cap);
-
+ int (*request_locality)(struct tpm_chip *chip, int loc);
+ void (*relinquish_locality)(struct tpm_chip *chip, int loc);
};
#if defined(CONFIG_TCG_TPM) || defined(CONFIG_TCG_TPM_MODULE)
--
2.9.3
[toc] | [next] | [standalone]
| From | Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> |
|---|---|
| Date | 2017-03-24 11:20 +0100 |
| Message-ID | <touu6-8u8-17@gated-at.bofh.it> |
| In reply to | #1608294 |
On Fri, Mar 24, 2017 at 12:10:30PM +0200, Jarkko Sakkinen wrote: > This commit adds support for requesting and relinquishing locality 0 in > tpm_crb for the course of command transmission. > > In order to achieve this, two new callbacks are added to struct > tpm_class_ops: > > - request_locality > - relinquish_locality > > With CRB interface you first set either requestAccess or relinquish bit > from TPM_LOC_CTRL_x register and then wait for locAssigned and > tpmRegValidSts bits to be set in the TPM_LOC_STATE_x register. > > The reason why were are doing this is to make sure that the driver > will work properly with Intel TXT that uses locality 2. There's no > explicit guarantee that it would relinquish this locality. In more > general sense this commit enables tpm_crb to be a well behaving > citizen in a multi locality environment. > > Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> > --- > v2: > - TPM driver level calllbacks > v3: > - Call ops->relinquish_locality only if ops->request_locality has been > successful. > - Do not reserve locality in nested tpm_transmit calls. > - Check for tpmRegValidSts to make sure that the value in TPM_LOC_STATE_x is > stable. > v4: > - Removed tpm_tis_core changes. It needs to be done separately. It will be > postponed to 4.13. > - Store locality to struct tpm_chip while active. > drivers/char/tpm/tpm-chip.c | 1 + > drivers/char/tpm/tpm-interface.c | 13 +++++++++++++ > drivers/char/tpm/tpm.h | 3 +++ > drivers/char/tpm/tpm_crb.c | 41 ++++++++++++++++++++++++++++++++++++++++ > include/linux/tpm.h | 3 ++- > 5 files changed, 60 insertions(+), 1 deletion(-) > > diff --git a/drivers/char/tpm/tpm-chip.c b/drivers/char/tpm/tpm-chip.c > index aade699..a321bd5 100644 > --- a/drivers/char/tpm/tpm-chip.c > +++ b/drivers/char/tpm/tpm-chip.c > @@ -231,6 +231,7 @@ struct tpm_chip *tpm_chip_alloc(struct device *pdev, > goto out; > } > > + chip->locality = -1; > return chip; > > out: > diff --git a/drivers/char/tpm/tpm-interface.c b/drivers/char/tpm/tpm-interface.c > index 95c6f98..1815666 100644 > --- a/drivers/char/tpm/tpm-interface.c > +++ b/drivers/char/tpm/tpm-interface.c > @@ -384,6 +384,7 @@ ssize_t tpm_transmit(struct tpm_chip *chip, struct tpm_space *space, > ssize_t len = 0; > u32 count, ordinal; > unsigned long stop; > + bool need_locality = chip->locality == -1; This must be set *after* taking the mutex. Otherwise, I think this should be fine now. /Jarkko
[toc] | [prev] | [next] | [standalone]
| From | Jerry Snitselaar <jsnitsel@redhat.com> |
|---|---|
| Date | 2017-03-25 13:30 +0100 |
| Message-ID | <toSZs-FQ-3@gated-at.bofh.it> |
| In reply to | #1608297 |
Jarkko Sakkinen @ 2017-03-24 10:19 GMT: > On Fri, Mar 24, 2017 at 12:10:30PM +0200, Jarkko Sakkinen wrote: >> This commit adds support for requesting and relinquishing locality 0 in >> tpm_crb for the course of command transmission. >> >> In order to achieve this, two new callbacks are added to struct >> tpm_class_ops: >> >> - request_locality >> - relinquish_locality >> >> With CRB interface you first set either requestAccess or relinquish bit >> from TPM_LOC_CTRL_x register and then wait for locAssigned and >> tpmRegValidSts bits to be set in the TPM_LOC_STATE_x register. >> >> The reason why were are doing this is to make sure that the driver >> will work properly with Intel TXT that uses locality 2. There's no >> explicit guarantee that it would relinquish this locality. In more >> general sense this commit enables tpm_crb to be a well behaving >> citizen in a multi locality environment. >> >> Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> >> --- >> v2: >> - TPM driver level calllbacks >> v3: >> - Call ops->relinquish_locality only if ops->request_locality has been >> successful. >> - Do not reserve locality in nested tpm_transmit calls. >> - Check for tpmRegValidSts to make sure that the value in TPM_LOC_STATE_x is >> stable. >> v4: >> - Removed tpm_tis_core changes. It needs to be done separately. It will be >> postponed to 4.13. >> - Store locality to struct tpm_chip while active. >> drivers/char/tpm/tpm-chip.c | 1 + >> drivers/char/tpm/tpm-interface.c | 13 +++++++++++++ >> drivers/char/tpm/tpm.h | 3 +++ >> drivers/char/tpm/tpm_crb.c | 41 ++++++++++++++++++++++++++++++++++++++++ >> include/linux/tpm.h | 3 ++- >> 5 files changed, 60 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/char/tpm/tpm-chip.c b/drivers/char/tpm/tpm-chip.c >> index aade699..a321bd5 100644 >> --- a/drivers/char/tpm/tpm-chip.c >> +++ b/drivers/char/tpm/tpm-chip.c >> @@ -231,6 +231,7 @@ struct tpm_chip *tpm_chip_alloc(struct device *pdev, >> goto out; >> } >> >> + chip->locality = -1; >> return chip; >> >> out: >> diff --git a/drivers/char/tpm/tpm-interface.c b/drivers/char/tpm/tpm-interface.c >> index 95c6f98..1815666 100644 >> --- a/drivers/char/tpm/tpm-interface.c >> +++ b/drivers/char/tpm/tpm-interface.c >> @@ -384,6 +384,7 @@ ssize_t tpm_transmit(struct tpm_chip *chip, struct tpm_space *space, >> ssize_t len = 0; >> u32 count, ordinal; >> unsigned long stop; >> + bool need_locality = chip->locality == -1; > > This must be set *after* taking the mutex. Otherwise, I think this > should be fine now. > > /Jarkko Sorry, I missed this email earlier. Yeah, I ran into this while trying to get the tpm_tis code working with this change tonight. Are you just going to move the assignment to right before the if block for request_locality? I've tested with the assignment moved inside the mutex on a kabylake system. I also tested with a patch for adding support to tpm_tis on a tpm_tis system, but that is a work in progress.
[toc] | [prev] | [next] | [standalone]
| From | Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> |
|---|---|
| Date | 2017-03-25 21:00 +0100 |
| Message-ID | <tp00V-5xt-5@gated-at.bofh.it> |
| In reply to | #1609140 |
On Sat, Mar 25, 2017 at 05:21:30AM -0700, Jerry Snitselaar wrote: > > Jarkko Sakkinen @ 2017-03-24 10:19 GMT: > > > On Fri, Mar 24, 2017 at 12:10:30PM +0200, Jarkko Sakkinen wrote: > >> This commit adds support for requesting and relinquishing locality 0 in > >> tpm_crb for the course of command transmission. > >> > >> In order to achieve this, two new callbacks are added to struct > >> tpm_class_ops: > >> > >> - request_locality > >> - relinquish_locality > >> > >> With CRB interface you first set either requestAccess or relinquish bit > >> from TPM_LOC_CTRL_x register and then wait for locAssigned and > >> tpmRegValidSts bits to be set in the TPM_LOC_STATE_x register. > >> > >> The reason why were are doing this is to make sure that the driver > >> will work properly with Intel TXT that uses locality 2. There's no > >> explicit guarantee that it would relinquish this locality. In more > >> general sense this commit enables tpm_crb to be a well behaving > >> citizen in a multi locality environment. > >> > >> Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> > >> --- > >> v2: > >> - TPM driver level calllbacks > >> v3: > >> - Call ops->relinquish_locality only if ops->request_locality has been > >> successful. > >> - Do not reserve locality in nested tpm_transmit calls. > >> - Check for tpmRegValidSts to make sure that the value in TPM_LOC_STATE_x is > >> stable. > >> v4: > >> - Removed tpm_tis_core changes. It needs to be done separately. It will be > >> postponed to 4.13. > >> - Store locality to struct tpm_chip while active. > >> drivers/char/tpm/tpm-chip.c | 1 + > >> drivers/char/tpm/tpm-interface.c | 13 +++++++++++++ > >> drivers/char/tpm/tpm.h | 3 +++ > >> drivers/char/tpm/tpm_crb.c | 41 ++++++++++++++++++++++++++++++++++++++++ > >> include/linux/tpm.h | 3 ++- > >> 5 files changed, 60 insertions(+), 1 deletion(-) > >> > >> diff --git a/drivers/char/tpm/tpm-chip.c b/drivers/char/tpm/tpm-chip.c > >> index aade699..a321bd5 100644 > >> --- a/drivers/char/tpm/tpm-chip.c > >> +++ b/drivers/char/tpm/tpm-chip.c > >> @@ -231,6 +231,7 @@ struct tpm_chip *tpm_chip_alloc(struct device *pdev, > >> goto out; > >> } > >> > >> + chip->locality = -1; > >> return chip; > >> > >> out: > >> diff --git a/drivers/char/tpm/tpm-interface.c b/drivers/char/tpm/tpm-interface.c > >> index 95c6f98..1815666 100644 > >> --- a/drivers/char/tpm/tpm-interface.c > >> +++ b/drivers/char/tpm/tpm-interface.c > >> @@ -384,6 +384,7 @@ ssize_t tpm_transmit(struct tpm_chip *chip, struct tpm_space *space, > >> ssize_t len = 0; > >> u32 count, ordinal; > >> unsigned long stop; > >> + bool need_locality = chip->locality == -1; > > > > This must be set *after* taking the mutex. Otherwise, I think this > > should be fine now. > > > > /Jarkko > > Sorry, I missed this email earlier. Yeah, I ran into this while trying to get the > tpm_tis code working with this change tonight. Are you just going to move the > assignment to right before the if block for request_locality? I've > tested with the assignment moved inside the mutex on a kabylake > system. > > I also tested with a patch for adding support to tpm_tis on a tpm_tis > system, but that is a work in progress. Yes. It's like that now in the locality branch in my tree. /Jarkko
[toc] | [prev] | [next] | [standalone]
| From | Jerry Snitselaar <jsnitsel@redhat.com> |
|---|---|
| Date | 2017-03-24 19:30 +0100 |
| Message-ID | <toC8k-5sk-71@gated-at.bofh.it> |
| In reply to | #1608294 |
Jarkko Sakkinen @ 2017-03-24 10:10 GMT: > This commit adds support for requesting and relinquishing locality 0 in > tpm_crb for the course of command transmission. > > In order to achieve this, two new callbacks are added to struct > tpm_class_ops: > > - request_locality > - relinquish_locality > > With CRB interface you first set either requestAccess or relinquish bit > from TPM_LOC_CTRL_x register and then wait for locAssigned and > tpmRegValidSts bits to be set in the TPM_LOC_STATE_x register. > > The reason why were are doing this is to make sure that the driver > will work properly with Intel TXT that uses locality 2. There's no > explicit guarantee that it would relinquish this locality. In more > general sense this commit enables tpm_crb to be a well behaving > citizen in a multi locality environment. > > Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> Reviewed-by: Jerry Snitselaar <jsnitsel@redhat.com> Tested-by: Jerry Snitselaar <jsnitsel@redhat.com> Tested on kabylake system that was hitting issues with earlier iteration. Still don't have platform to test it dealing with multi-locality enviroment.
[toc] | [prev] | [next] | [standalone]
| From | Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> |
|---|---|
| Date | 2017-03-25 21:00 +0100 |
| Message-ID | <tp00V-5xt-1@gated-at.bofh.it> |
| In reply to | #1608847 |
On Fri, Mar 24, 2017 at 11:25:57AM -0700, Jerry Snitselaar wrote: > > Jarkko Sakkinen @ 2017-03-24 10:10 GMT: > > > This commit adds support for requesting and relinquishing locality 0 in > > tpm_crb for the course of command transmission. > > > > In order to achieve this, two new callbacks are added to struct > > tpm_class_ops: > > > > - request_locality > > - relinquish_locality > > > > With CRB interface you first set either requestAccess or relinquish bit > > from TPM_LOC_CTRL_x register and then wait for locAssigned and > > tpmRegValidSts bits to be set in the TPM_LOC_STATE_x register. > > > > The reason why were are doing this is to make sure that the driver > > will work properly with Intel TXT that uses locality 2. There's no > > explicit guarantee that it would relinquish this locality. In more > > general sense this commit enables tpm_crb to be a well behaving > > citizen in a multi locality environment. > > > > Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> > > Reviewed-by: Jerry Snitselaar <jsnitsel@redhat.com> > Tested-by: Jerry Snitselaar <jsnitsel@redhat.com> > > Tested on kabylake system that was hitting issues with earlier > iteration. Still don't have platform to test it dealing with > multi-locality enviroment. I believe Jimmy (Gang Wei) has done such testing. Jimmy can you confirm and possibly do re-test (there's a locality branch in my tree to ease the testing) so that we could land this one? /Jarkko
[toc] | [prev] | [next] | [standalone]
| From | Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> |
|---|---|
| Date | 2017-03-26 14:10 +0200 |
| Message-ID | <tpf9D-88R-3@gated-at.bofh.it> |
| In reply to | #1609227 |
On Sat, Mar 25, 2017 at 09:52:11PM +0200, Jarkko Sakkinen wrote: > On Fri, Mar 24, 2017 at 11:25:57AM -0700, Jerry Snitselaar wrote: > > > > Jarkko Sakkinen @ 2017-03-24 10:10 GMT: > > > > > This commit adds support for requesting and relinquishing locality 0 in > > > tpm_crb for the course of command transmission. > > > > > > In order to achieve this, two new callbacks are added to struct > > > tpm_class_ops: > > > > > > - request_locality > > > - relinquish_locality > > > > > > With CRB interface you first set either requestAccess or relinquish bit > > > from TPM_LOC_CTRL_x register and then wait for locAssigned and > > > tpmRegValidSts bits to be set in the TPM_LOC_STATE_x register. > > > > > > The reason why were are doing this is to make sure that the driver > > > will work properly with Intel TXT that uses locality 2. There's no > > > explicit guarantee that it would relinquish this locality. In more > > > general sense this commit enables tpm_crb to be a well behaving > > > citizen in a multi locality environment. > > > > > > Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> > > > > Reviewed-by: Jerry Snitselaar <jsnitsel@redhat.com> > > Tested-by: Jerry Snitselaar <jsnitsel@redhat.com> > > > > Tested on kabylake system that was hitting issues with earlier > > iteration. Still don't have platform to test it dealing with > > multi-locality enviroment. > > I believe Jimmy (Gang Wei) has done such testing. Jimmy can you confirm > and possibly do re-test (there's a locality branch in my tree to ease > the testing) so that we could land this one? > > /Jarkko I applied this to my master and next branches. /Jarkko
[toc] | [prev] | [next] | [standalone]
| From | Jerry Snitselaar <jsnitsel@redhat.com> |
|---|---|
| Date | 2017-03-26 18:50 +0200 |
| Message-ID | <tpjwB-2ws-13@gated-at.bofh.it> |
| In reply to | #1609323 |
----- Original Message ----- > From: "Jarkko Sakkinen" <jarkko.sakkinen@linux.intel.com> > To: "Jerry Snitselaar" <jsnitsel@redhat.com>, "gang wei" <gang.wei@intel.com> > Cc: "Jarkko Sakkinen" <jarkko.sakkinen@iki.fi>, tpmdd-devel@lists.sourceforge.net, > linux-security-module@vger.kernel.org, "Peter Huewe" <peterhuewe@gmx.de>, "Marcel Selhorst" <tpmdd@selhorst.net>, > "Jason Gunthorpe" <jgunthorpe@obsidianresearch.com>, "open list" <linux-kernel@vger.kernel.org> > Sent: Sunday, March 26, 2017 3:52:39 AM > Subject: Re: [PATCH v4] tpm_crb: request and relinquish locality 0 > > On Sat, Mar 25, 2017 at 09:52:11PM +0200, Jarkko Sakkinen wrote: > > On Fri, Mar 24, 2017 at 11:25:57AM -0700, Jerry Snitselaar wrote: > > > > > > Jarkko Sakkinen @ 2017-03-24 10:10 GMT: > > > > > > > This commit adds support for requesting and relinquishing locality 0 in > > > > tpm_crb for the course of command transmission. > > > > > > > > In order to achieve this, two new callbacks are added to struct > > > > tpm_class_ops: > > > > > > > > - request_locality > > > > - relinquish_locality > > > > > > > > With CRB interface you first set either requestAccess or relinquish bit > > > > from TPM_LOC_CTRL_x register and then wait for locAssigned and > > > > tpmRegValidSts bits to be set in the TPM_LOC_STATE_x register. > > > > > > > > The reason why were are doing this is to make sure that the driver > > > > will work properly with Intel TXT that uses locality 2. There's no > > > > explicit guarantee that it would relinquish this locality. In more > > > > general sense this commit enables tpm_crb to be a well behaving > > > > citizen in a multi locality environment. > > > > > > > > Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> > > > > > > Reviewed-by: Jerry Snitselaar <jsnitsel@redhat.com> > > > Tested-by: Jerry Snitselaar <jsnitsel@redhat.com> > > > > > > Tested on kabylake system that was hitting issues with earlier > > > iteration. Still don't have platform to test it dealing with > > > multi-locality enviroment. > > > > I believe Jimmy (Gang Wei) has done such testing. Jimmy can you confirm > > and possibly do re-test (there's a locality branch in my tree to ease > > the testing) so that we could land this one? > > > > /Jarkko > > I applied this to my master and next branches. > > /Jarkko > Hi Jarkko, The patch applied to next and master doesn't have the assignment moved inside the mutex.
[toc] | [prev] | [next] | [standalone]
| From | Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> |
|---|---|
| Date | 2017-03-26 22:00 +0200 |
| Message-ID | <tpmuu-4EH-23@gated-at.bofh.it> |
| In reply to | #1609351 |
On Sun, Mar 26, 2017 at 12:39:29PM -0400, Jerry Snitselaar wrote: > > > ----- Original Message ----- > > From: "Jarkko Sakkinen" <jarkko.sakkinen@linux.intel.com> > > To: "Jerry Snitselaar" <jsnitsel@redhat.com>, "gang wei" <gang.wei@intel.com> > > Cc: "Jarkko Sakkinen" <jarkko.sakkinen@iki.fi>, tpmdd-devel@lists.sourceforge.net, > > linux-security-module@vger.kernel.org, "Peter Huewe" <peterhuewe@gmx.de>, "Marcel Selhorst" <tpmdd@selhorst.net>, > > "Jason Gunthorpe" <jgunthorpe@obsidianresearch.com>, "open list" <linux-kernel@vger.kernel.org> > > Sent: Sunday, March 26, 2017 3:52:39 AM > > Subject: Re: [PATCH v4] tpm_crb: request and relinquish locality 0 > > > > On Sat, Mar 25, 2017 at 09:52:11PM +0200, Jarkko Sakkinen wrote: > > > On Fri, Mar 24, 2017 at 11:25:57AM -0700, Jerry Snitselaar wrote: > > > > > > > > Jarkko Sakkinen @ 2017-03-24 10:10 GMT: > > > > > > > > > This commit adds support for requesting and relinquishing locality 0 in > > > > > tpm_crb for the course of command transmission. > > > > > > > > > > In order to achieve this, two new callbacks are added to struct > > > > > tpm_class_ops: > > > > > > > > > > - request_locality > > > > > - relinquish_locality > > > > > > > > > > With CRB interface you first set either requestAccess or relinquish bit > > > > > from TPM_LOC_CTRL_x register and then wait for locAssigned and > > > > > tpmRegValidSts bits to be set in the TPM_LOC_STATE_x register. > > > > > > > > > > The reason why were are doing this is to make sure that the driver > > > > > will work properly with Intel TXT that uses locality 2. There's no > > > > > explicit guarantee that it would relinquish this locality. In more > > > > > general sense this commit enables tpm_crb to be a well behaving > > > > > citizen in a multi locality environment. > > > > > > > > > > Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> > > > > > > > > Reviewed-by: Jerry Snitselaar <jsnitsel@redhat.com> > > > > Tested-by: Jerry Snitselaar <jsnitsel@redhat.com> > > > > > > > > Tested on kabylake system that was hitting issues with earlier > > > > iteration. Still don't have platform to test it dealing with > > > > multi-locality enviroment. > > > > > > I believe Jimmy (Gang Wei) has done such testing. Jimmy can you confirm > > > and possibly do re-test (there's a locality branch in my tree to ease > > > the testing) so that we could land this one? > > > > > > /Jarkko > > > > I applied this to my master and next branches. > > > > /Jarkko > > > > Hi Jarkko, > > The patch applied to next and master doesn't have the assignment moved > inside the mutex. WTF, I applied old patch version by mistake. Sorry about that and thanks for spotting that out. Better? /Jarkko
[toc] | [prev] | [next] | [standalone]
| From | Jerry Snitselaar <jsnitsel@redhat.com> |
|---|---|
| Date | 2017-03-27 01:00 +0200 |
| Message-ID | <tppiF-6NU-5@gated-at.bofh.it> |
| In reply to | #1609392 |
Jarkko Sakkinen @ 2017-03-26 19:51 GMT: > WTF, I applied old patch version by mistake. Sorry about that and > thanks for spotting that out. Better? > > /Jarkko Looks good now.
[toc] | [prev] | [next] | [standalone]
| From | Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> |
|---|---|
| Date | 2017-03-27 07:20 +0200 |
| Message-ID | <tpvep-2Ve-3@gated-at.bofh.it> |
| In reply to | #1609411 |
On Sun, Mar 26, 2017 at 03:42:12PM -0700, Jerry Snitselaar wrote: > > Jarkko Sakkinen @ 2017-03-26 19:51 GMT: > > > WTF, I applied old patch version by mistake. Sorry about that and > > thanks for spotting that out. Better? > > > > /Jarkko > > > Looks good now. Great, thanks. /Jarkko
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web