From: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
To: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
Cc: "Martin Wilck" <Martin.Wilck@ts.fujitsu.com>,
tpmdd-devel@lists.sourceforge.net, linux-kernel@vger.kernel.org,
"Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>
Subject: Re: [tpmdd-devel] [PATCH v2 0/3] tpm_tis: Clean up force module parameter
Date: Sun, 6 Dec 2015 06:02:26 +0200 [thread overview]
Message-ID: <20151206040226.GA4396@intel.com> (raw)
In-Reply-To: <20151203181932.GA22973@obsidianresearch.com>
On Thu, Dec 03, 2015 at 11:19:32AM -0700, Jason Gunthorpe wrote:
> On Thu, Dec 03, 2015 at 08:00:42AM +0200, Jarkko Sakkinen wrote:
>
> > I guess it'd be more realiable. In my NUC the current fix works and the
> > people who tested it. If you supply me a fix that changes it to use that
> > I can test it and this will give also coverage to the people who tested
> > my original fix.
>
> Here is the updated series:
>
> https://github.com/jgunthorpe/linux/commits/for-jarkko
>
> What does your dmesg say?
>
> It really isn't OK to hardwire an address for acpi devices, so I've
> added something like this. Just completely guessing that control_pa is
> where the BIOS is hiding the base address. Maybe it is cca->cmd_pa ?
I'm a bit confused about the discussion because Martin replied that
tpm_tis used to get the address range before applying this series.
And pnp_driver in the backend for TPM 1.x devices grabs the address
range from DSDT.
/Jarkko
> From c9f7c0465008657f7fc7880496f68f4a1b3b4a26 Mon Sep 17 00:00:00 2001
> From: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
> Date: Thu, 3 Dec 2015 10:58:56 -0700
> Subject: [PATCH 3/5] tpm_tis: Do not fall back to a hardcoded address for TPM2
>
> If the ACPI tables do not declare a memory resource for the TPM2
> then do not just fall back to the x86 default base address.
>
> WIP: Guess that the control_address is the base address for the
> TIS 1.2 memory mapped interface.
>
> Signed-off-by: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
> ---
> drivers/char/tpm/tpm_tis.c | 50 +++++++++++++++++++---------------------------
> 1 file changed, 20 insertions(+), 30 deletions(-)
>
> diff --git a/drivers/char/tpm/tpm_tis.c b/drivers/char/tpm/tpm_tis.c
> index fecd27b45fd1..6b28f8003425 100644
> --- a/drivers/char/tpm/tpm_tis.c
> +++ b/drivers/char/tpm/tpm_tis.c
> @@ -122,39 +122,11 @@ static inline int is_itpm(struct acpi_device *dev)
> {
> return has_hid(dev, "INTC0102");
> }
> -
> -static inline int is_fifo(struct acpi_device *dev)
> -{
> - struct acpi_table_tpm2 *tbl;
> - acpi_status st;
> -
> - /* TPM 1.2 FIFO */
> - if (!has_hid(dev, "MSFT0101"))
> - return 1;
> -
> - st = acpi_get_table(ACPI_SIG_TPM2, 1,
> - (struct acpi_table_header **) &tbl);
> - if (ACPI_FAILURE(st)) {
> - dev_err(&dev->dev, "failed to get TPM2 ACPI table\n");
> - return 0;
> - }
> -
> - if (tbl->start_method != ACPI_TPM2_MEMORY_MAPPED)
> - return 0;
> -
> - /* TPM 2.0 FIFO */
> - return 1;
> -}
> #else
> static inline int is_itpm(struct acpi_device *dev)
> {
> return 0;
> }
> -
> -static inline int is_fifo(struct acpi_device *dev)
> -{
> - return 1;
> -}
> #endif
>
> /* Before we attempt to access the TPM we must see that the valid bit is set.
> @@ -980,11 +952,21 @@ static int tpm_check_resource(struct acpi_resource *ares, void *data)
>
> static int tpm_tis_acpi_init(struct acpi_device *acpi_dev)
> {
> + struct acpi_table_tpm2 *tbl;
> + acpi_status st;
> struct list_head resources;
> - struct tpm_info tpm_info = tis_default_info;
> + struct tpm_info tpm_info = {};
> int ret;
>
> - if (!is_fifo(acpi_dev))
> + st = acpi_get_table(ACPI_SIG_TPM2, 1,
> + (struct acpi_table_header **) &tbl);
> + if (ACPI_FAILURE(st)) {
> + dev_err(&acpi_dev->dev,
> + FW_BUG "failed to get TPM2 ACPI table\n");
> + return -ENODEV;
> + }
> +
> + if (tbl->start_method != ACPI_TPM2_MEMORY_MAPPED)
> return -ENODEV;
>
> INIT_LIST_HEAD(&resources);
> @@ -996,6 +978,14 @@ static int tpm_tis_acpi_init(struct acpi_device *acpi_dev)
>
> acpi_dev_free_resource_list(&resources);
>
> + if (tpm_info.start == 0 && tpm_info.len == 0) {
> + tpm_info.start = tbl->control_address;
> + tpm_info.len = TIS_MEM_LEN;
> + dev_err(&acpi_dev->dev,
> + FW_BUG "TPM2 ACPI table does not define a memory resource, using 0x%lx instead\n",
> + tpm_info.start);
> + }
> +
> if (is_itpm(acpi_dev))
> itpm = true;
>
> --
> 2.1.4
>
next prev parent reply other threads:[~2015-12-06 4:02 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-12-01 18:58 [PATCH v2 0/3] tpm_tis: Clean up force module parameter Jason Gunthorpe
2015-12-01 18:58 ` [PATCH v2 1/3] tpm_tis: Disable interrupt auto probing on a per-device basis Jason Gunthorpe
2015-12-01 19:19 ` Uwe Kleine-König
2015-12-01 19:36 ` Jason Gunthorpe
2015-12-01 18:58 ` [PATCH v2 2/3] tpm_tis: Use devm_ioremap_resource Jason Gunthorpe
2015-12-01 19:22 ` Uwe Kleine-König
2015-12-01 19:44 ` Jason Gunthorpe
2015-12-01 19:52 ` Uwe Kleine-König
2015-12-01 20:46 ` Jason Gunthorpe
2015-12-01 18:58 ` [PATCH v2 3/3] tpm_tis: Clean up the force=1 module parameter Jason Gunthorpe
2015-12-01 19:33 ` Uwe Kleine-König
2015-12-01 19:51 ` Jason Gunthorpe
2015-12-01 21:14 ` [PATCH v2 0/3] tpm_tis: Clean up force " Jarkko Sakkinen
2015-12-01 21:33 ` Jarkko Sakkinen
2015-12-01 22:22 ` Jason Gunthorpe
2015-12-02 1:15 ` Peter Huewe
2015-12-02 8:14 ` Jarkko Sakkinen
2015-12-02 9:02 ` Peter Huewe
2015-12-02 8:11 ` Jarkko Sakkinen
2015-12-02 8:21 ` Uwe Kleine-König
2015-12-02 16:53 ` Greg Kroah-Hartman
2015-12-02 16:59 ` Uwe Kleine-König
2015-12-03 8:51 ` [PATCH v3] base/platform: fix binding for drivers without probe callback martin.wilck
2015-12-03 9:00 ` Uwe Kleine-König
2015-12-03 9:34 ` [tpmdd-devel] " Jarkko Sakkinen
2015-12-02 18:27 ` [PATCH v2 0/3] tpm_tis: Clean up force module parameter Jason Gunthorpe
2015-12-02 19:11 ` [tpmdd-devel] " Jason Gunthorpe
2015-12-03 6:00 ` Jarkko Sakkinen
2015-12-03 18:19 ` Jason Gunthorpe
2015-12-06 4:02 ` Jarkko Sakkinen [this message]
2015-12-06 4:15 ` Jarkko Sakkinen
2015-12-06 4:20 ` Jarkko Sakkinen
2015-12-07 6:15 ` Jason Gunthorpe
2015-12-07 8:06 ` Wilck, Martin
2015-12-07 8:56 ` Jarkko Sakkinen
2015-12-07 9:52 ` Wilck, Martin
2015-12-07 10:16 ` Jarkko Sakkinen
2015-12-03 8:30 ` Wilck, Martin
2015-12-03 17:00 ` Jason Gunthorpe
2015-12-04 8:39 ` Wilck, Martin
2015-12-04 9:10 ` Wilck, Martin
2015-12-04 18:09 ` Jason Gunthorpe
2015-12-07 9:59 ` Wilck, Martin
2015-12-07 17:35 ` Jason Gunthorpe
2015-12-03 5:58 ` Jarkko Sakkinen
2015-12-02 12:34 ` Wilck, Martin
2015-12-02 18:11 ` Jason Gunthorpe
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=20151206040226.GA4396@intel.com \
--to=jarkko.sakkinen@linux.intel.com \
--cc=Martin.Wilck@ts.fujitsu.com \
--cc=jgunthorpe@obsidianresearch.com \
--cc=linux-kernel@vger.kernel.org \
--cc=tpmdd-devel@lists.sourceforge.net \
--cc=u.kleine-koenig@pengutronix.de \
/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.