public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Vasant Hegde <vasant.hegde@amd.com>
To: Jason Gunthorpe <jgg@nvidia.com>
Cc: Nicolin Chen <nicolinc@nvidia.com>,
	kevin.tian@intel.com, corbet@lwn.net, will@kernel.org,
	bagasdotme@gmail.com, robin.murphy@arm.com, joro@8bytes.org,
	thierry.reding@gmail.com, vdumpa@nvidia.com,
	jonathanh@nvidia.com, shuah@kernel.org, jsnitsel@redhat.com,
	nathan@kernel.org, peterz@infradead.org, yi.l.liu@intel.com,
	mshavit@google.com, praan@google.com, zhangzekun11@huawei.com,
	iommu@lists.linux.dev, linux-doc@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	linux-tegra@vger.kernel.org, linux-kselftest@vger.kernel.org,
	patches@lists.linux.dev, mochs@nvidia.com,
	alok.a.tiwari@oracle.com,
	Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
Subject: Re: [PATCH v3 11/23] iommufd/viommu: Add IOMMUFD_CMD_VQUEUE_ALLOC ioctl
Date: Wed, 7 May 2025 13:11:43 +0530	[thread overview]
Message-ID: <eb0d3629-8663-45e9-b929-0c6edff31291@amd.com> (raw)
In-Reply-To: <20250506120114.GV2260709@nvidia.com>

Hi Jason,


On 5/6/2025 5:31 PM, Jason Gunthorpe wrote:
> On Tue, May 06, 2025 at 02:45:00PM +0530, Vasant Hegde wrote:
>>> +/**
>>> + * struct iommu_vqueue_alloc - ioctl(IOMMU_VQUEUE_ALLOC)
>>> + * @size: sizeof(struct iommu_vqueue_alloc)
>>> + * @flags: Must be 0
>>> + * @viommu_id: Virtual IOMMU ID to associate the virtual queue with
>>> + * @type: One of enum iommu_vqueue_type
>>> + * @index: The logical index to the virtual queue per virtual IOMMU, for a multi
>>> + *         queue model
>>> + * @out_vqueue_id: The ID of the new virtual queue
>>> + * @addr: Base address of the queue memory in the guest physical address space
>>> + * @length: Length of the queue memory in the guest physical address space
>>> + *
>>> + * Allocate a virtual queue object for a vIOMMU-specific HW-acceleration feature
>>> + * that allows HW to access a guest queue memory described by @addr and @length.
>>> + * It's suggested for VMM to back the queue memory using a single huge page with
>>> + * a proper alignment for its contiguity in the host physical address space. The
>>> + * call will fail, if the queue memory is not contiguous in the physical address
>>> + * space. Upon success, its underlying physical pages will be pinned to prevent
>>> + * VMM from unmapping them in the IOAS, until the virtual queue gets destroyed.
>>> + *
>>> + * A vIOMMU can allocate multiple queues, but it must use a different @index to
>>> + * separate each allocation, e.g. VCMDQ0, VCMDQ1, ...
>>
>> This will handle multiple queues. But AMD vIOMMU needs to comunicate certain
>> control bit setting which is not related to buffers like "Completion wait
>> interrupt".
>>
>> How do we handle that? extend iommu_queue_alloc() or have different interface?
> 
> Do you need a modify queue operation?

We have two types of operations. One that impacts the queue, other set of bits
which doesn't operate on qeueue.

ex: Event log buffer
  - We configure "MMIO Offset 0010h Event Log Base Address Register" with Base
address and size

  -  MMIO Offset 0018h IOMMU Control Register
     EventLogEn: Event log enable
       * When guest sets this bit, qemu will trap and will send queue_alloc
       * When guest disables this bit, qemu will trap and send vqueue_destroy

     This part is fine.

     EventIntEn: Event log interrupt enable
       * When guest sets this bit, qemu will trap
       * this needs to be communicated to Host so that we can program VF Control
BAR and enable the interrupt

  - There is other bit "Completion wait interrupt enable"
    This doesn't related to any buffer. Instead if we configure this for
completion wait command it will generate interrupt.

I am asking how do we handle above two steps? Should it be part of queue IOCTL
or may be some other IOCTL which just passes these info to HW driver?

-Vasant


  reply	other threads:[~2025-05-07  7:42 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-05-01 23:01 [PATCH v3 00/23] iommufd: Add vIOMMU infrastructure (Part-4 vQUEUE) Nicolin Chen
2025-05-01 23:01 ` [PATCH v3 01/23] iommufd/viommu: Add driver-allocated vDEVICE support Nicolin Chen
2025-05-01 23:01 ` [PATCH v3 02/23] iommu: Pass in a driver-level user data structure to viommu_alloc op Nicolin Chen
2025-05-06  5:43   ` Vasant Hegde
2025-05-01 23:01 ` [PATCH v3 03/23] iommufd/viommu: Allow driver-specific user data for a vIOMMU object Nicolin Chen
2025-05-06  9:32   ` Vasant Hegde
2025-05-01 23:01 ` [PATCH v3 04/23] iommu: Add iommu_copy_struct_to_user helper Nicolin Chen
2025-05-01 23:01 ` [PATCH v3 05/23] iommufd/driver: Let iommufd_viommu_alloc helper save ictx to viommu->ictx Nicolin Chen
2025-05-01 23:01 ` [PATCH v3 06/23] iommufd/driver: Add iommufd_struct_destroy to revert iommufd_viommu_alloc Nicolin Chen
2025-05-01 23:01 ` [PATCH v3 07/23] iommufd/selftest: Support user_data in mock_viommu_alloc Nicolin Chen
2025-05-01 23:01 ` [PATCH v3 08/23] iommufd/selftest: Add covearge for viommu data Nicolin Chen
2025-05-01 23:01 ` [PATCH v3 09/23] iommufd: Abstract iopt_pin_pages and iopt_unpin_pages helpers Nicolin Chen
2025-05-01 23:01 ` [PATCH v3 10/23] iommufd/viommu: Introduce IOMMUFD_OBJ_VQUEUE and its related struct Nicolin Chen
2025-05-06  9:17   ` Vasant Hegde
2025-05-01 23:01 ` [PATCH v3 11/23] iommufd/viommu: Add IOMMUFD_CMD_VQUEUE_ALLOC ioctl Nicolin Chen
2025-05-06  9:15   ` Vasant Hegde
2025-05-06 12:01     ` Jason Gunthorpe
2025-05-07  7:41       ` Vasant Hegde [this message]
2025-05-07  8:00         ` Tian, Kevin
2025-05-07 12:31         ` Jason Gunthorpe
2025-05-08  4:46           ` Vasant Hegde
2025-05-08  5:56             ` Nicolin Chen
2025-05-08 12:14               ` Jason Gunthorpe
2025-05-08 17:12                 ` Nicolin Chen
2025-05-09 11:52                   ` Vasant Hegde
2025-05-01 23:01 ` [PATCH v3 12/23] iommufd/driver: Add iommufd_vqueue_depend/undepend() helpers Nicolin Chen
2025-05-01 23:01 ` [PATCH v3 13/23] iommufd/selftest: Add coverage for IOMMUFD_CMD_VQUEUE_ALLOC Nicolin Chen
2025-05-01 23:01 ` [PATCH v3 14/23] iommufd: Add mmap interface Nicolin Chen
2025-05-01 23:01 ` [PATCH v3 15/23] iommufd/selftest: Add coverage for the new " Nicolin Chen
2025-05-01 23:01 ` [PATCH v3 16/23] Documentation: userspace-api: iommufd: Update vQUEUE Nicolin Chen
2025-05-02  3:50   ` Bagas Sanjaya
2025-05-02  5:29     ` Nicolin Chen
2025-05-02  7:31       ` Bagas Sanjaya
2025-05-01 23:01 ` [PATCH v3 17/23] iommu/arm-smmu-v3-iommufd: Add vsmmu_alloc impl op Nicolin Chen
2025-05-01 23:01 ` [PATCH v3 18/23] iommu/arm-smmu-v3-iommufd: Support implementation-defined hw_info Nicolin Chen
2025-05-01 23:01 ` [PATCH v3 19/23] iommu/tegra241-cmdqv: Use request_threaded_irq Nicolin Chen
2025-05-01 23:01 ` [PATCH v3 20/23] iommu/tegra241-cmdqv: Simplify deinit flow in tegra241_cmdqv_remove_vintf() Nicolin Chen
2025-05-01 23:01 ` [PATCH v3 21/23] iommu/tegra241-cmdqv: Do not statically map LVCMDQs Nicolin Chen
2025-05-01 23:01 ` [PATCH v3 22/23] iommu/tegra241-cmdqv: Add user-space use support Nicolin Chen
2025-05-01 23:09   ` Nicolin Chen
2025-05-01 23:01 ` [PATCH v3 23/23] iommu/tegra241-cmdqv: Add IOMMU_VEVENTQ_TYPE_TEGRA241_CMDQV support 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=eb0d3629-8663-45e9-b929-0c6edff31291@amd.com \
    --to=vasant.hegde@amd.com \
    --cc=alok.a.tiwari@oracle.com \
    --cc=bagasdotme@gmail.com \
    --cc=corbet@lwn.net \
    --cc=iommu@lists.linux.dev \
    --cc=jgg@nvidia.com \
    --cc=jonathanh@nvidia.com \
    --cc=joro@8bytes.org \
    --cc=jsnitsel@redhat.com \
    --cc=kevin.tian@intel.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=linux-tegra@vger.kernel.org \
    --cc=mochs@nvidia.com \
    --cc=mshavit@google.com \
    --cc=nathan@kernel.org \
    --cc=nicolinc@nvidia.com \
    --cc=patches@lists.linux.dev \
    --cc=peterz@infradead.org \
    --cc=praan@google.com \
    --cc=robin.murphy@arm.com \
    --cc=shuah@kernel.org \
    --cc=suravee.suthikulpanit@amd.com \
    --cc=thierry.reding@gmail.com \
    --cc=vdumpa@nvidia.com \
    --cc=will@kernel.org \
    --cc=yi.l.liu@intel.com \
    --cc=zhangzekun11@huawei.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox