On 28.08.2025 07:48, Oleksii Moisieiev wrote:
> 
> 
> On 22/07/2025 15:34, Jan Beulich wrote:
>> On 22.07.2025 13:41, Oleksii Moisieiev wrote:
>>> @@ -859,7 +860,25 @@ long do_domctl(XEN_GUEST_HANDLE_PARAM(xen_domctl_t) 
>>> u_domctl)
>>>       case XEN_DOMCTL_test_assign_device:
>>>       case XEN_DOMCTL_deassign_device:
>>>       case XEN_DOMCTL_get_device_group:
>>> +        int ret1;
>>> +
>>>           ret = iommu_do_domctl(op, d, u_domctl);
>>> +        if ( ret < 0 && ret != -ENXIO )
>>> +            return ret;
>> If this is where you want the ENXIO for that the previous patch switched to,
>> then I see no reason for that earlier change at all. Inside the hypervisor
>> you can simply figure out what the right thing to do is; you could avoid
>> calling iommu_do_domctl() altogether and call ...
> 
> My point was to leave the decision making to the calls themselves.
> So iommu_do_domctl will make a decision whether to process the node or 
> not, same for the scmi call.
> I can figure out if there is a need to call iommu_do_domctl or 
> sci_do_domctl here but this means moving
> part of the logic from specific calls to the common code.

To avoid that, maybe it needs doing the other way around? I.e. try ...

>>> +        /*
>>> +         * Add chained handling of assigned DT devices to support
>>> +         * access-controller functionality through SCI framework, so
>>> +         * DT device assign request can be passed to FW for processing and
>>> +         * enabling VM access to requested device.
>>> +         * The access-controller DT device processing is chained after 
>>> IOMMU
>>> +         * processing and expected to be executed for any DT device
>>> +         * regardless if DT device is protected by IOMMU or not (or IOMMU
>>> +         * is disabled).
>>> +         */
>>> +        ret1 = sci_do_domctl(op, d, u_domctl);

... this first?

Jan

Reply via email to