Hi Nicolin, Jason, On 5/8/2025 10:42 PM, Nicolin Chen wrote: > On Thu, May 08, 2025 at 09:14:56AM -0300, Jason Gunthorpe wrote: >> On Wed, May 07, 2025 at 10:56:17PM -0700, Nicolin Chen wrote: >> >>> What I am not sure is if the HW allows setting the ComWaitIntEn bit >>> after CmdBufEn=1, which seems to be unlikely but the spec does not >>> highlight. If so, this would be an modification to the HW QUEUE, in >>> which case we could either do an relocation of the HW QUEUE (where >>> we can set the flag in the 2nd allocation) or add an new option via >>> IOMMUFD_CMD_OPTION (as Kevin suggested), and I think it should be >>> a per-HW_QUEUE option since it doesn't affect other type of queues >>> like Event/PRR Log Buffers. >> >> The main question is if the control is global to the entire VIOMMU and >> all its HW QUEUE's or local to a single HW QUEUE. > > Oh, that's right.. I recall AMD only has one Command Buffer, > but can have dual Event Log Buffers and dual PPR Log Buffers. Right. > > And the EventIntEn or PprIntEn bit seem to be global for the > dual buffers.. Yes. But there are other bit to configure dual buffers etc. (like DualEventLogEn). > >> If it is global then some "modify viommu" operation should be used to >> change it. >> >> If it is local then some "modify hw queu" operation. >> >> IOMMUFD_CMD_OPTION could be used with an object_id == VIOMMU as a kind >> of modify.. > > Vasant can confirm. But looks like it should be a vIOMMU > option. I think CMD_OPTION will work. So something like below? if (cmd_option_id == IOMMU_OPTION_VIOMMU && cmd->object_id == viommu_id) iommufd_viommu->ops->viommu_options() ? -Vasant