public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Hillf Danton <hdanton@sina.com>
To: Elliot Berman <quic_eberman@quicinc.com>
Cc: Will Deacon <will@kernel.org>,
	Sean Christopherson <seanjc@google.com>,
	linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v16 07/34] gunyah: rsc_mgr: Add resource manager RPC core
Date: Wed, 10 Jan 2024 19:41:01 +0800	[thread overview]
Message-ID: <20240110114101.3343-1-hdanton@sina.com> (raw)
In-Reply-To: <20240109-gunyah-v16-7-634904bf4ce9@quicinc.com>

On Tue, 9 Jan 2024 11:37:45 -0800 Elliot Berman <quic_eberman@quicinc.com>
> +
> +static irqreturn_t gunyah_rm_tx(int irq, void *data)
> +{
> +	struct gunyah_rm *rm = data;
> +
> +	complete_all(&rm->send_ready);
> +
> +	return IRQ_HANDLED;
> +}
> +
> +static int gunyah_rm_msgq_send(struct gunyah_rm *rm, size_t size, bool push)
> +	__must_hold(&rm->send_lock)
> +{
> +	const u64 tx_flags = push ? GUNYAH_HYPERCALL_MSGQ_TX_FLAGS_PUSH : 0;
> +	enum gunyah_error gunyah_error;
> +	void *data = &rm->send_msg[0];
> +	bool ready;

	lockdep_assert_held(&rm->send_lock); instead of __must_hold
> +
> +again:
> +	wait_for_completion(&rm->send_ready);
> +	/* reinit completion before hypercall. As soon as hypercall returns, we could get the
> +	 * ready interrupt. This might be before we have time to reinit the completion
> +	 */
> +	reinit_completion(&rm->send_ready);

Given wait_for_completion(&rm->send_ready) with rm->send_lock held,
complete(&rm->send_ready) works for you with the bonus of cutting this
reinit off.

> +	gunyah_error = gunyah_hypercall_msgq_send(rm->tx_ghrsc.capid, size,
> +						  data, tx_flags, &ready);
> +
> +	/* Should never happen because Linux properly tracks the ready-state of the msgq */
> +	if (WARN_ON(gunyah_error == GUNYAH_ERROR_MSGQUEUE_FULL))
> +		goto again;
> +
> +	if (ready)
> +		complete_all(&rm->send_ready);
> +
> +	return gunyah_error_remap(gunyah_error);
> +}

  reply	other threads:[~2024-01-10 11:41 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-01-09 19:37 [PATCH v16 00/34] Drivers for Gunyah hypervisor Elliot Berman
2024-01-09 19:37 ` [PATCH v16 01/34] docs: gunyah: Introduce Gunyah Hypervisor Elliot Berman
2024-01-09 23:31   ` Randy Dunlap
2024-01-10  0:28     ` Elliot Berman
2024-01-10  0:31       ` Randy Dunlap
2024-01-09 19:37 ` [PATCH v16 02/34] dt-bindings: Add binding for gunyah hypervisor Elliot Berman
2024-01-09 19:37 ` [PATCH v16 03/34] gunyah: Common types and error codes for Gunyah hypercalls Elliot Berman
2024-01-09 19:37 ` [PATCH v16 04/34] virt: gunyah: Add hypercalls to identify Gunyah Elliot Berman
2024-01-09 19:37 ` [PATCH v16 05/34] virt: gunyah: Add hypervisor driver Elliot Berman
2024-01-09 19:37 ` [PATCH v16 06/34] virt: gunyah: msgq: Add hypercalls to send and receive messages Elliot Berman
2024-01-09 19:37 ` [PATCH v16 07/34] gunyah: rsc_mgr: Add resource manager RPC core Elliot Berman
2024-01-10 11:41   ` Hillf Danton [this message]
2024-01-10 17:48     ` Elliot Berman
2024-01-09 19:37 ` [PATCH v16 08/34] gunyah: vm_mgr: Introduce basic VM Manager Elliot Berman
2024-01-09 19:37 ` [PATCH v16 09/34] gunyah: rsc_mgr: Add VM lifecycle RPC Elliot Berman
2024-01-09 19:37 ` [PATCH v16 10/34] gunyah: vm_mgr: Add VM start/stop Elliot Berman
2024-01-09 19:37 ` [PATCH v16 11/34] virt: gunyah: Translate gh_rm_hyp_resource into gunyah_resource Elliot Berman
2024-01-09 19:37 ` [PATCH v16 12/34] virt: gunyah: Add resource tickets Elliot Berman
2024-01-09 19:37 ` [PATCH v16 13/34] gunyah: vm_mgr: Add framework for VM Functions Elliot Berman
2024-01-09 19:37 ` [PATCH v16 14/34] virt: gunyah: Add hypercalls for running a vCPU Elliot Berman
2024-01-09 19:37 ` [PATCH v16 15/34] virt: gunyah: Add proxy-scheduled vCPUs Elliot Berman
2024-01-09 19:37 ` [PATCH v16 16/34] gunyah: Add hypercalls for demand paging Elliot Berman
2024-01-09 19:37 ` [PATCH v16 17/34] gunyah: rsc_mgr: Add memory parcel RPC Elliot Berman
2024-01-09 19:37 ` [PATCH v16 18/34] virt: gunyah: Add interfaces to map memory into guest address space Elliot Berman
2024-01-09 19:37 ` [PATCH v16 19/34] gunyah: rsc_mgr: Add platform ops on mem_lend/mem_reclaim Elliot Berman
2024-01-09 19:37 ` [PATCH v16 20/34] virt: gunyah: Add Qualcomm Gunyah platform ops Elliot Berman
2024-01-09 19:37 ` [PATCH v16 21/34] virt: gunyah: Implement guestmemfd Elliot Berman
2024-01-09 19:38 ` [PATCH v16 22/34] virt: gunyah: Add ioctl to bind guestmem to VMs Elliot Berman
2024-01-09 19:38 ` [PATCH v16 23/34] virt: gunyah: guestmem: Initialize RM mem parcels from guestmem Elliot Berman
2024-01-09 19:38 ` [PATCH v16 24/34] virt: gunyah: Share guest VM dtb configuration to Gunyah Elliot Berman
2024-01-09 19:38 ` [PATCH v16 25/34] gunyah: rsc_mgr: Add RPC to enable demand paging Elliot Berman
2024-01-09 19:38 ` [PATCH v16 26/34] mm/interval_tree: Export iter_first/iter_next Elliot Berman
2024-01-09 19:38 ` [PATCH v16 27/34] virt: gunyah: Enable demand paging Elliot Berman
2024-01-09 19:38 ` [PATCH v16 28/34] gunyah: rsc_mgr: Add RPC to set VM boot context Elliot Berman
2024-01-09 19:38 ` [PATCH v16 29/34] virt: gunyah: Allow userspace to initialize context of primary vCPU Elliot Berman
2024-01-09 19:38 ` [PATCH v16 30/34] virt: gunyah: Add hypercalls for sending doorbell Elliot Berman
2024-01-09 19:38 ` [PATCH v16 31/34] virt: gunyah: Add irqfd interface Elliot Berman
2024-01-09 19:38 ` [PATCH v16 32/34] virt: gunyah: Add IO handlers Elliot Berman
2024-01-09 19:38 ` [PATCH v16 33/34] virt: gunyah: Add ioeventfd Elliot Berman
2024-01-09 19:38 ` [PATCH v16 34/34] MAINTAINERS: Add Gunyah hypervisor drivers section Elliot Berman

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=20240110114101.3343-1-hdanton@sina.com \
    --to=hdanton@sina.com \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=quic_eberman@quicinc.com \
    --cc=seanjc@google.com \
    --cc=will@kernel.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox