From: Harald Freudenberger <freude@linux.ibm.com>
To: Nicolin Chen <nicolinc@nvidia.com>
Cc: kwankhede@nvidia.com, corbet@lwn.net, hca@linux.ibm.com,
gor@linux.ibm.com, agordeev@linux.ibm.com,
borntraeger@linux.ibm.com, svens@linux.ibm.com,
zhenyuw@linux.intel.com, zhi.a.wang@intel.com,
jani.nikula@linux.intel.com, joonas.lahtinen@linux.intel.com,
rodrigo.vivi@intel.com, tvrtko.ursulin@linux.intel.com,
airlied@linux.ie, daniel@ffwll.ch, farman@linux.ibm.com,
mjrosato@linux.ibm.com, pasic@linux.ibm.com,
vneethv@linux.ibm.com, oberpar@linux.ibm.com,
akrowiak@linux.ibm.com, jjherne@linux.ibm.com,
alex.williamson@redhat.com, cohuck@redhat.com, jgg@nvidia.com,
kevin.tian@intel.com, jchrist@linux.ibm.com, kvm@vger.kernel.org,
linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-s390@vger.kernel.org, intel-gvt-dev@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org
Subject: Re: [RFT][PATCH v1 1/6] vfio/ap: Pass in physical address of ind to ap_aqic()
Date: Mon, 20 Jun 2022 12:00:53 +0200 [thread overview]
Message-ID: <fd564e6270a4bfcd9249559a797365ae@linux.ibm.com> (raw)
In-Reply-To: <20220616235212.15185-2-nicolinc@nvidia.com>
On 2022-06-17 01:52, Nicolin Chen wrote:
> The ap_aqic() is called by vfio_ap_irq_enable() where it passes in a
> virt value that's casted from a physical address "h_nib". Inside the
> ap_aqic(), it does virt_to_phys() again.
>
> Since ap_aqic() needs a physical address, let's just pass in a pa of
> ind directly. So change the "ind" to "pa_ind".
>
> Signed-off-by: Nicolin Chen <nicolinc@nvidia.com>
> ---
> arch/s390/include/asm/ap.h | 6 +++---
> drivers/s390/crypto/ap_queue.c | 2 +-
> drivers/s390/crypto/vfio_ap_ops.c | 7 ++++---
> 3 files changed, 8 insertions(+), 7 deletions(-)
>
> diff --git a/arch/s390/include/asm/ap.h b/arch/s390/include/asm/ap.h
> index b515cfa62bd9..f508f5025e38 100644
> --- a/arch/s390/include/asm/ap.h
> +++ b/arch/s390/include/asm/ap.h
> @@ -227,13 +227,13 @@ struct ap_qirq_ctrl {
> * ap_aqic(): Control interruption for a specific AP.
> * @qid: The AP queue number
> * @qirqctrl: struct ap_qirq_ctrl (64 bit value)
> - * @ind: The notification indicator byte
> + * @pa_ind: Physical address of the notification indicator byte
> *
> * Returns AP queue status.
> */
> static inline struct ap_queue_status ap_aqic(ap_qid_t qid,
> struct ap_qirq_ctrl qirqctrl,
> - void *ind)
> + phys_addr_t pa_ind)
> {
> unsigned long reg0 = qid | (3UL << 24); /* fc 3UL is AQIC */
> union {
> @@ -241,7 +241,7 @@ static inline struct ap_queue_status
> ap_aqic(ap_qid_t qid,
> struct ap_qirq_ctrl qirqctrl;
> struct ap_queue_status status;
> } reg1;
> - unsigned long reg2 = virt_to_phys(ind);
> + unsigned long reg2 = pa_ind;
>
> reg1.qirqctrl = qirqctrl;
>
> diff --git a/drivers/s390/crypto/ap_queue.c
> b/drivers/s390/crypto/ap_queue.c
> index c48b0db824e3..a32457b4cbb8 100644
> --- a/drivers/s390/crypto/ap_queue.c
> +++ b/drivers/s390/crypto/ap_queue.c
> @@ -34,7 +34,7 @@ static int ap_queue_enable_irq(struct ap_queue *aq,
> void *ind)
>
> qirqctrl.ir = 1;
> qirqctrl.isc = AP_ISC;
> - status = ap_aqic(aq->qid, qirqctrl, ind);
> + status = ap_aqic(aq->qid, qirqctrl, virt_to_phys(ind));
> switch (status.response_code) {
> case AP_RESPONSE_NORMAL:
> case AP_RESPONSE_OTHERWISE_CHANGED:
> diff --git a/drivers/s390/crypto/vfio_ap_ops.c
> b/drivers/s390/crypto/vfio_ap_ops.c
> index a7d2a95796d3..bb869b28cebd 100644
> --- a/drivers/s390/crypto/vfio_ap_ops.c
> +++ b/drivers/s390/crypto/vfio_ap_ops.c
> @@ -154,7 +154,7 @@ static struct ap_queue_status
> vfio_ap_irq_disable(struct vfio_ap_queue *q)
> int retries = 5;
>
> do {
> - status = ap_aqic(q->apqn, aqic_gisa, NULL);
> + status = ap_aqic(q->apqn, aqic_gisa, 0);
> switch (status.response_code) {
> case AP_RESPONSE_OTHERWISE_CHANGED:
> case AP_RESPONSE_NORMAL:
> @@ -245,7 +245,8 @@ static struct ap_queue_status
> vfio_ap_irq_enable(struct vfio_ap_queue *q,
> struct kvm_s390_gisa *gisa;
> int nisc;
> struct kvm *kvm;
> - unsigned long h_nib, g_pfn, h_pfn;
> + unsigned long g_pfn, h_pfn;
> + phys_addr_t h_nib;
> int ret;
>
> /* Verify that the notification indicator byte address is valid */
> @@ -290,7 +291,7 @@ static struct ap_queue_status
> vfio_ap_irq_enable(struct vfio_ap_queue *q,
> aqic_gisa.ir = 1;
> aqic_gisa.gisa = (uint64_t)gisa >> 4;
>
> - status = ap_aqic(q->apqn, aqic_gisa, (void *)h_nib);
> + status = ap_aqic(q->apqn, aqic_gisa, h_nib);
> switch (status.response_code) {
> case AP_RESPONSE_NORMAL:
> /* See if we did clear older IRQ configuration */
Add my Reviewed-By: Harald Freudenberger <freude@linux.ibm.com>
WARNING: multiple messages have this Message-ID (diff)
From: Harald Freudenberger <freude@linux.ibm.com>
To: Nicolin Chen <nicolinc@nvidia.com>
Cc: mjrosato@linux.ibm.com, linux-doc@vger.kernel.org,
airlied@linux.ie, kevin.tian@intel.com,
dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org,
kwankhede@nvidia.com, vneethv@linux.ibm.com,
agordeev@linux.ibm.com, linux-s390@vger.kernel.org,
kvm@vger.kernel.org, corbet@lwn.net, pasic@linux.ibm.com,
jgg@nvidia.com, borntraeger@linux.ibm.com,
intel-gfx@lists.freedesktop.org, zhi.a.wang@intel.com,
akrowiak@linux.ibm.com, farman@linux.ibm.com,
jchrist@linux.ibm.com, gor@linux.ibm.com, hca@linux.ibm.com,
alex.williamson@redhat.com, rodrigo.vivi@intel.com,
intel-gvt-dev@lists.freedesktop.org, jjherne@linux.ibm.com,
tvrtko.ursulin@linux.intel.com, cohuck@redhat.com,
oberpar@linux.ibm.com, svens@linux.ibm.com
Subject: Re: [RFT][PATCH v1 1/6] vfio/ap: Pass in physical address of ind to ap_aqic()
Date: Mon, 20 Jun 2022 12:00:53 +0200 [thread overview]
Message-ID: <fd564e6270a4bfcd9249559a797365ae@linux.ibm.com> (raw)
In-Reply-To: <20220616235212.15185-2-nicolinc@nvidia.com>
On 2022-06-17 01:52, Nicolin Chen wrote:
> The ap_aqic() is called by vfio_ap_irq_enable() where it passes in a
> virt value that's casted from a physical address "h_nib". Inside the
> ap_aqic(), it does virt_to_phys() again.
>
> Since ap_aqic() needs a physical address, let's just pass in a pa of
> ind directly. So change the "ind" to "pa_ind".
>
> Signed-off-by: Nicolin Chen <nicolinc@nvidia.com>
> ---
> arch/s390/include/asm/ap.h | 6 +++---
> drivers/s390/crypto/ap_queue.c | 2 +-
> drivers/s390/crypto/vfio_ap_ops.c | 7 ++++---
> 3 files changed, 8 insertions(+), 7 deletions(-)
>
> diff --git a/arch/s390/include/asm/ap.h b/arch/s390/include/asm/ap.h
> index b515cfa62bd9..f508f5025e38 100644
> --- a/arch/s390/include/asm/ap.h
> +++ b/arch/s390/include/asm/ap.h
> @@ -227,13 +227,13 @@ struct ap_qirq_ctrl {
> * ap_aqic(): Control interruption for a specific AP.
> * @qid: The AP queue number
> * @qirqctrl: struct ap_qirq_ctrl (64 bit value)
> - * @ind: The notification indicator byte
> + * @pa_ind: Physical address of the notification indicator byte
> *
> * Returns AP queue status.
> */
> static inline struct ap_queue_status ap_aqic(ap_qid_t qid,
> struct ap_qirq_ctrl qirqctrl,
> - void *ind)
> + phys_addr_t pa_ind)
> {
> unsigned long reg0 = qid | (3UL << 24); /* fc 3UL is AQIC */
> union {
> @@ -241,7 +241,7 @@ static inline struct ap_queue_status
> ap_aqic(ap_qid_t qid,
> struct ap_qirq_ctrl qirqctrl;
> struct ap_queue_status status;
> } reg1;
> - unsigned long reg2 = virt_to_phys(ind);
> + unsigned long reg2 = pa_ind;
>
> reg1.qirqctrl = qirqctrl;
>
> diff --git a/drivers/s390/crypto/ap_queue.c
> b/drivers/s390/crypto/ap_queue.c
> index c48b0db824e3..a32457b4cbb8 100644
> --- a/drivers/s390/crypto/ap_queue.c
> +++ b/drivers/s390/crypto/ap_queue.c
> @@ -34,7 +34,7 @@ static int ap_queue_enable_irq(struct ap_queue *aq,
> void *ind)
>
> qirqctrl.ir = 1;
> qirqctrl.isc = AP_ISC;
> - status = ap_aqic(aq->qid, qirqctrl, ind);
> + status = ap_aqic(aq->qid, qirqctrl, virt_to_phys(ind));
> switch (status.response_code) {
> case AP_RESPONSE_NORMAL:
> case AP_RESPONSE_OTHERWISE_CHANGED:
> diff --git a/drivers/s390/crypto/vfio_ap_ops.c
> b/drivers/s390/crypto/vfio_ap_ops.c
> index a7d2a95796d3..bb869b28cebd 100644
> --- a/drivers/s390/crypto/vfio_ap_ops.c
> +++ b/drivers/s390/crypto/vfio_ap_ops.c
> @@ -154,7 +154,7 @@ static struct ap_queue_status
> vfio_ap_irq_disable(struct vfio_ap_queue *q)
> int retries = 5;
>
> do {
> - status = ap_aqic(q->apqn, aqic_gisa, NULL);
> + status = ap_aqic(q->apqn, aqic_gisa, 0);
> switch (status.response_code) {
> case AP_RESPONSE_OTHERWISE_CHANGED:
> case AP_RESPONSE_NORMAL:
> @@ -245,7 +245,8 @@ static struct ap_queue_status
> vfio_ap_irq_enable(struct vfio_ap_queue *q,
> struct kvm_s390_gisa *gisa;
> int nisc;
> struct kvm *kvm;
> - unsigned long h_nib, g_pfn, h_pfn;
> + unsigned long g_pfn, h_pfn;
> + phys_addr_t h_nib;
> int ret;
>
> /* Verify that the notification indicator byte address is valid */
> @@ -290,7 +291,7 @@ static struct ap_queue_status
> vfio_ap_irq_enable(struct vfio_ap_queue *q,
> aqic_gisa.ir = 1;
> aqic_gisa.gisa = (uint64_t)gisa >> 4;
>
> - status = ap_aqic(q->apqn, aqic_gisa, (void *)h_nib);
> + status = ap_aqic(q->apqn, aqic_gisa, h_nib);
> switch (status.response_code) {
> case AP_RESPONSE_NORMAL:
> /* See if we did clear older IRQ configuration */
Add my Reviewed-By: Harald Freudenberger <freude@linux.ibm.com>
next prev parent reply other threads:[~2022-06-20 10:01 UTC|newest]
Thread overview: 75+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-06-16 23:52 [RFT][PATCH v1 0/6] Update vfio_pin/unpin_pages API Nicolin Chen
2022-06-16 23:52 ` Nicolin Chen
2022-06-16 23:52 ` [RFT][PATCH v1 1/6] vfio/ap: Pass in physical address of ind to ap_aqic() Nicolin Chen
2022-06-16 23:52 ` Nicolin Chen
2022-06-20 10:00 ` Harald Freudenberger [this message]
2022-06-20 10:00 ` Harald Freudenberger
2022-06-21 21:01 ` [Intel-gfx] " Nicolin Chen
2022-06-21 21:01 ` Nicolin Chen
2022-06-21 21:01 ` Nicolin Chen
2022-06-16 23:52 ` [RFT][PATCH v1 2/6] vfio/ccw: Only pass in contiguous pages Nicolin Chen
2022-06-16 23:52 ` Nicolin Chen
2022-06-16 23:52 ` [RFT][PATCH v1 3/6] vfio: Pass in starting IOVA to vfio_pin/unpin_pages API Nicolin Chen
2022-06-16 23:52 ` Nicolin Chen
2022-06-17 8:42 ` [Intel-gfx] " Christoph Hellwig
2022-06-17 8:42 ` Christoph Hellwig
2022-06-17 21:57 ` Nicolin Chen
2022-06-17 21:57 ` Nicolin Chen
2022-06-22 1:18 ` [Intel-gfx] " Nicolin Chen
2022-06-22 1:18 ` Nicolin Chen
2022-06-22 1:18 ` Nicolin Chen
2022-06-16 23:52 ` [RFT][PATCH v1 4/6] vfio: Rename user_iova of vfio_dma_rw() Nicolin Chen
2022-06-16 23:52 ` Nicolin Chen
2022-06-16 23:52 ` [RFT][PATCH v1 5/6] vfio/ccw: Add kmap_local_page() for memcpy Nicolin Chen
2022-06-16 23:52 ` Nicolin Chen
2022-06-17 8:44 ` [Intel-gfx] " Christoph Hellwig
2022-06-17 8:44 ` Christoph Hellwig
2022-06-17 21:58 ` Nicolin Chen
2022-06-17 21:58 ` Nicolin Chen
2022-06-20 2:57 ` [Intel-gfx] " Jason Gunthorpe
2022-06-20 2:57 ` Jason Gunthorpe
2022-06-20 2:57 ` Jason Gunthorpe
2022-06-20 6:32 ` [Intel-gfx] " Christoph Hellwig
2022-06-20 6:32 ` Christoph Hellwig
2022-06-20 15:39 ` [Intel-gfx] " Jason Gunthorpe
2022-06-20 15:39 ` Jason Gunthorpe
2022-06-20 15:39 ` Jason Gunthorpe
2022-06-21 21:21 ` [Intel-gfx] " Nicolin Chen
2022-06-21 21:21 ` Nicolin Chen
2022-06-21 21:21 ` Nicolin Chen
2022-06-24 13:56 ` [Intel-gfx] " Jason Gunthorpe
2022-06-24 13:56 ` Jason Gunthorpe
2022-06-24 13:56 ` Jason Gunthorpe
2022-06-24 19:22 ` Nicolin Chen
2022-06-24 19:22 ` Nicolin Chen
2022-06-24 19:30 ` [Intel-gfx] " Jason Gunthorpe
2022-06-24 19:30 ` Jason Gunthorpe
2022-06-24 19:30 ` Jason Gunthorpe
2022-06-24 20:12 ` Nicolin Chen
2022-06-24 20:12 ` Nicolin Chen
2022-06-24 22:42 ` [Intel-gfx] " Jason Gunthorpe
2022-06-24 22:42 ` Jason Gunthorpe
2022-06-24 22:42 ` Jason Gunthorpe
2022-06-16 23:52 ` [RFT][PATCH v1 6/6] vfio: Replace phys_pfn with phys_page for vfio_pin_pages() Nicolin Chen
2022-06-16 23:52 ` Nicolin Chen
2022-06-17 8:54 ` [Intel-gfx] " Christoph Hellwig
2022-06-17 8:54 ` Christoph Hellwig
2022-06-17 22:06 ` Nicolin Chen
2022-06-17 22:06 ` Nicolin Chen
2022-06-19 6:18 ` [Intel-gfx] " Christoph Hellwig
2022-06-19 6:18 ` Christoph Hellwig
2022-06-19 6:41 ` Nicolin Chen
2022-06-19 6:41 ` Nicolin Chen
2022-06-20 3:00 ` [Intel-gfx] " Jason Gunthorpe
2022-06-20 3:00 ` Jason Gunthorpe
2022-06-20 3:00 ` Jason Gunthorpe
2022-06-20 5:51 ` [Intel-gfx] " Christoph Hellwig
2022-06-20 5:51 ` Christoph Hellwig
2022-06-20 6:37 ` [Intel-gfx] " Christoph Hellwig
2022-06-20 6:37 ` Christoph Hellwig
2022-06-20 15:36 ` [Intel-gfx] " Jason Gunthorpe
2022-06-20 15:36 ` Jason Gunthorpe
2022-06-20 15:36 ` Jason Gunthorpe
2022-06-21 21:47 ` [Intel-gfx] " Nicolin Chen
2022-06-21 21:47 ` Nicolin Chen
2022-06-21 21:47 ` Nicolin Chen
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=fd564e6270a4bfcd9249559a797365ae@linux.ibm.com \
--to=freude@linux.ibm.com \
--cc=agordeev@linux.ibm.com \
--cc=airlied@linux.ie \
--cc=akrowiak@linux.ibm.com \
--cc=alex.williamson@redhat.com \
--cc=borntraeger@linux.ibm.com \
--cc=cohuck@redhat.com \
--cc=corbet@lwn.net \
--cc=daniel@ffwll.ch \
--cc=dri-devel@lists.freedesktop.org \
--cc=farman@linux.ibm.com \
--cc=gor@linux.ibm.com \
--cc=hca@linux.ibm.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=intel-gvt-dev@lists.freedesktop.org \
--cc=jani.nikula@linux.intel.com \
--cc=jchrist@linux.ibm.com \
--cc=jgg@nvidia.com \
--cc=jjherne@linux.ibm.com \
--cc=joonas.lahtinen@linux.intel.com \
--cc=kevin.tian@intel.com \
--cc=kvm@vger.kernel.org \
--cc=kwankhede@nvidia.com \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-s390@vger.kernel.org \
--cc=mjrosato@linux.ibm.com \
--cc=nicolinc@nvidia.com \
--cc=oberpar@linux.ibm.com \
--cc=pasic@linux.ibm.com \
--cc=rodrigo.vivi@intel.com \
--cc=svens@linux.ibm.com \
--cc=tvrtko.ursulin@linux.intel.com \
--cc=vneethv@linux.ibm.com \
--cc=zhenyuw@linux.intel.com \
--cc=zhi.a.wang@intel.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.