All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jarkko Sakkinen <jarkko@kernel.org>
To: Lino Sanfilippo <LinoSanfilippo@gmx.de>
Cc: peterhuewe@gmx.de, jgg@ziepe.ca, stefanb@linux.vnet.ibm.com,
	linux@mniewoehner.de, linux-integrity@vger.kernel.org,
	linux-kernel@vger.kernel.org, l.sanfilippo@kunbus.com,
	lukas@wunner.de, p.rosenberger@kunbus.com
Subject: Re: [PATCH v7 07/10] tmp, tmp_tis: Implement usage counter for locality
Date: Fri, 15 Jul 2022 16:41:54 +0300	[thread overview]
Message-ID: <YtFuov88jumGF12J@kernel.org> (raw)
In-Reply-To: <62cec6b9-396b-83d0-b10f-78b0bb61e317@gmx.de>

On Mon, Jul 11, 2022 at 11:03:05PM +0200, Lino Sanfilippo wrote:
> 
> On 11.07.22 04:50, Jarkko Sakkinen wrote:
> > On Mon, Jul 04, 2022 at 07:45:12PM +0200, Lino Sanfilippo wrote:
> >>
> >>
> >> On 01.07.22 01:29, Jarkko Sakkinen wrote:
> >>
> >>>
> >>> I'm kind of thinking that should tpm_tis_data have a lock for its
> >>> contents?
> >>
> >> Most of the tpm_tis_data structure elements are set once during init and
> >> then never changed but only read. So no need for locking for these. The
> >> exceptions I see are
> >>
> >> - flags
> >> - locality_count
> >> - locality
> >
> > I'd still go for single data struct lock, since this lock would
> > be taken in every transmit flow.
> 
> Well in both cases, transmit and receive, we end up in wait_for_tmp_stat().
> Whatever lock we hold at this time cannot be taken in the interrupt
> handler, since this would deadlock (wait_for_tmp_stat() waits for the interrupt
> handler to complete but holds the lock that the interrupt handler needs to proceed).
> 
> So in the interrupt handler we need something that is not held during the whole
> transmit/receive flow.
> 
> This is the reason why the locality_count_mutex only protects the one thing we
> have to take care of in the interrupt handler, namely the locality counter.
> 
> 
> > It makes the whole thing easier
> > to maintain over time, and does not really affect scalability>
> > This brings me to another question: what does this lock protect
> > against given that tpm_try_get_ops() already takes tpm_mutex?
> > It's not clear and that should be somehow reasoned in the commit
> > message.
> 
> See above, we cannot take the tpm mutex in the interrupt handler for the same
> reason.

You should squash this then with the following patch.

Also, I'm not sure why you don't use kref for this.

> > Anyway, *if* a lock is needed the granularity should be the whole
> > struct.
> >
> > BR, Jarkko
> 
> Regards,
> Lino

BR, Jarkko

  reply	other threads:[~2022-07-15 13:42 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-06-29 23:26 [PATCH v7 00/10] TPM IRQ fixes Lino Sanfilippo
2022-06-29 23:26 ` [PATCH v7 01/10] tpm, tpm_tis: Avoid cache incoherency in test for interrupts Lino Sanfilippo
2022-06-29 23:26 ` [PATCH v7 02/10] tpm, tpm_tis: Claim locality before writing TPM_INT_ENABLE register Lino Sanfilippo
2022-06-29 23:26 ` [PATCH v7 03/10] tpm, tpm_tis: Disable interrupts if tpm_tis_probe_irq() failed Lino Sanfilippo
2022-06-29 23:26 ` [PATCH v7 04/10] tpm, tmp_tis: Claim locality before writing interrupt registers Lino Sanfilippo
2022-06-29 23:26 ` [PATCH v7 05/10] tpm, tpm_tis: Only handle supported interrupts Lino Sanfilippo
2022-06-30 23:18   ` Jarkko Sakkinen
2022-08-26 17:43   ` Jason Andryuk
2022-08-29  8:03     ` Lino Sanfilippo
2022-08-30  6:29     ` Lino Sanfilippo
2022-06-29 23:26 ` [PATCH v7 06/10] tpm, tpm_tis: Move interrupt mask checks into own function Lino Sanfilippo
2022-06-30 23:19   ` Jarkko Sakkinen
2022-06-29 23:26 ` [PATCH v7 07/10] tmp, tmp_tis: Implement usage counter for locality Lino Sanfilippo
2022-06-30 23:29   ` Jarkko Sakkinen
2022-06-30 23:31     ` Jarkko Sakkinen
2022-07-04 17:45     ` Lino Sanfilippo
2022-07-11  2:50       ` Jarkko Sakkinen
2022-07-11 21:03         ` Lino Sanfilippo
2022-07-15 13:41           ` Jarkko Sakkinen [this message]
2022-07-27 12:16         ` Lino Sanfilippo
2022-07-28  8:15           ` Jarkko Sakkinen
2022-07-28 15:45             ` Lino Sanfilippo
2022-10-08 17:05               ` Lino Sanfilippo
2022-07-28 17:36       ` Lino Sanfilippo
2022-08-01 16:42         ` Jarkko Sakkinen
2022-07-11 19:39   ` Jason Andryuk
2022-07-11 21:15     ` Lino Sanfilippo
2022-06-29 23:26 ` [PATCH v7 08/10] tpm, tpm_tis: Request threaded interrupt handler Lino Sanfilippo
2022-06-30 23:32   ` Jarkko Sakkinen
2022-06-29 23:26 ` [PATCH v7 09/10] tpm, tpm_tis: Claim locality in " Lino Sanfilippo
2022-06-29 23:26 ` [PATCH v7 10/10] tpm, tpm_tis: Enable interrupt test Lino Sanfilippo

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=YtFuov88jumGF12J@kernel.org \
    --to=jarkko@kernel.org \
    --cc=LinoSanfilippo@gmx.de \
    --cc=jgg@ziepe.ca \
    --cc=l.sanfilippo@kunbus.com \
    --cc=linux-integrity@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@mniewoehner.de \
    --cc=lukas@wunner.de \
    --cc=p.rosenberger@kunbus.com \
    --cc=peterhuewe@gmx.de \
    --cc=stefanb@linux.vnet.ibm.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 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.