From: Matthew Rosato <mjrosato@linux.ibm.com>
To: Niklas Schnelle <schnelle@linux.ibm.com>,
Robin Murphy <robin.murphy@arm.com>,
Gerd Bayer <gbayer@linux.ibm.com>,
Heiko Carstens <hca@linux.ibm.com>,
Vasily Gorbik <gor@linux.ibm.com>,
Alexander Gordeev <agordeev@linux.ibm.com>,
Christian Borntraeger <borntraeger@linux.ibm.com>,
Sven Schnelle <svens@linux.ibm.com>,
Gerald Schaefer <gerald.schaefer@linux.ibm.com>,
Joerg Roedel <jroedel@suse.de>
Cc: linux-s390@vger.kernel.org, linux-kernel@vger.kernel.org,
iommu@lists.linux.dev
Subject: Re: [PATCH] s390/pci: Fix reset of IOMMU software counters
Date: Wed, 4 Oct 2023 11:24:31 -0400 [thread overview]
Message-ID: <33d32a0a-26bb-6bdf-e07c-79b6ac84a032@linux.ibm.com> (raw)
In-Reply-To: <20231004-dma_iommu_fix-v1-1-129777cd8232@linux.ibm.com>
On 10/4/23 4:56 AM, Niklas Schnelle wrote:
> Together with enabling the Function Measurement Block
> zpci_fmb_enable_device() also resets the software counters. This allows
> to use "echo 0 > /sys/kernel/debug/pci/<dev>/statistics" followed by
> echo "1 > /../statistics" to reset all counters. In commit c76c067e488c
> ("s390/pci: Use dma-iommu layer") this use of the now obsolete counters
> in struct zpci_device was missed as was their removal. Fix this by
> resetting the new counters and removing the old ones.
>
> Fixes: c76c067e488c ("s390/pci: Use dma-iommu layer")
> Signed-off-by: Niklas Schnelle <schnelle@linux.ibm.com>
Reviewed-by: Matthew Rosato <mjrosato@linux.ibm.com>
Verified that I could reproduce the initial issue + tested the fix using NVMe and mlx devices
> ---
> Note: This is based on and references commit IDs from Joerg Roedel's
> iommu/next branch and should go in via the iommu tree.
> ---
> arch/s390/include/asm/pci.h | 4 ----
> arch/s390/pci/pci.c | 13 ++++++++++---
> 2 files changed, 10 insertions(+), 7 deletions(-)
>
> diff --git a/arch/s390/include/asm/pci.h b/arch/s390/include/asm/pci.h
> index 3f74f1cf37df..e91cd6bbc330 100644
> --- a/arch/s390/include/asm/pci.h
> +++ b/arch/s390/include/asm/pci.h
> @@ -173,10 +173,6 @@ struct zpci_dev {
> struct zpci_fmb *fmb;
> u16 fmb_update; /* update interval */
> u16 fmb_length;
> - /* software counters */
> - atomic64_t allocated_pages;
> - atomic64_t mapped_pages;
> - atomic64_t unmapped_pages;
>
> u8 version;
> enum pci_bus_speed max_bus_speed;
> diff --git a/arch/s390/pci/pci.c b/arch/s390/pci/pci.c
> index 563cb72d9ed0..63fd9e1d9f22 100644
> --- a/arch/s390/pci/pci.c
> +++ b/arch/s390/pci/pci.c
> @@ -157,6 +157,7 @@ int zpci_unregister_ioat(struct zpci_dev *zdev, u8 dmaas)
> int zpci_fmb_enable_device(struct zpci_dev *zdev)
> {
> u64 req = ZPCI_CREATE_REQ(zdev->fh, 0, ZPCI_MOD_FC_SET_MEASURE);
> + struct zpci_iommu_ctrs *ctrs;
> struct zpci_fib fib = {0};
> u8 cc, status;
>
> @@ -169,9 +170,15 @@ int zpci_fmb_enable_device(struct zpci_dev *zdev)
> WARN_ON((u64) zdev->fmb & 0xf);
>
> /* reset software counters */
> - atomic64_set(&zdev->allocated_pages, 0);
> - atomic64_set(&zdev->mapped_pages, 0);
> - atomic64_set(&zdev->unmapped_pages, 0);
> + ctrs = zpci_get_iommu_ctrs(zdev);
> + if (ctrs) {
> + atomic64_set(&ctrs->mapped_pages, 0);
> + atomic64_set(&ctrs->unmapped_pages, 0);
> + atomic64_set(&ctrs->global_rpcits, 0);
> + atomic64_set(&ctrs->sync_map_rpcits, 0);
> + atomic64_set(&ctrs->sync_rpcits, 0);
> + }
> +
>
> fib.fmb_addr = virt_to_phys(zdev->fmb);
> fib.gd = zdev->gisa;
>
> ---
> base-commit: 8e5ab3f54a1061c2be3e1fbcda01fbe604c3450e
> change-id: 20231002-dma_iommu_fix-0a5397992f15
>
> Best regards,
next prev parent reply other threads:[~2023-10-04 15:24 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-04 8:56 [PATCH] s390/pci: Fix reset of IOMMU software counters Niklas Schnelle
2023-10-04 15:24 ` Matthew Rosato [this message]
2023-10-05 11:01 ` Joerg Roedel
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=33d32a0a-26bb-6bdf-e07c-79b6ac84a032@linux.ibm.com \
--to=mjrosato@linux.ibm.com \
--cc=agordeev@linux.ibm.com \
--cc=borntraeger@linux.ibm.com \
--cc=gbayer@linux.ibm.com \
--cc=gerald.schaefer@linux.ibm.com \
--cc=gor@linux.ibm.com \
--cc=hca@linux.ibm.com \
--cc=iommu@lists.linux.dev \
--cc=jroedel@suse.de \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-s390@vger.kernel.org \
--cc=robin.murphy@arm.com \
--cc=schnelle@linux.ibm.com \
--cc=svens@linux.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.