[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v6 3/7] xen/arm: setup MMIO range trap handlers for hardware domain



Hi, Julien!

On 23.11.21 18:12, Julien Grall wrote:
>
>
> On 23/11/2021 06:58, Oleksandr Andrushchenko wrote:
>> Hi, Julien!
>
> Hi Oleksandr,
>
>> On 22.11.21 19:36, Julien Grall wrote:
>>> On 18/11/2021 10:46, Oleksandr Andrushchenko wrote:
>>>> On 18.11.21 09:27, Oleksandr Andrushchenko wrote:
>>>>>>> +    unsigned int count;
>>>>>>> +
>>>>>>> +    if ( is_hardware_domain(d) )
>>>>>>> +        /* For each PCI host bridge's configuration space. */
>>>>>>> +        count = pci_host_get_num_bridges();
>>>>>> This first part makes sense to me. But...
>>>>>>
>>>>>>> +    else
>>>>>> ... I don't understand how the else is related to this commit. Can you 
>>>>>> clarify it?
>>>>>>
>>>>>>> +        /*
>>>>>>> +         * There's a single MSI-X MMIO handler that deals with both PBA
>>>>>>> +         * and MSI-X tables per each PCI device being passed through.
>>>>>>> +         * Maximum number of supported devices is 32 as virtual bus
>>>>>>> +         * topology emulates the devices as embedded endpoints.
>>>>>>> +         * +1 for a single emulated host bridge's configuration space.
>>>>>>> +         */
>>>>>>> +        count = 1;
>>>>>>> +#ifdef CONFIG_HAS_PCI_MSI
>>>>>>> +        count += 32;
>>>>>> Surely, this is a decision that is based on other factor in the vPCI 
>>>>>> code. So can use a define and avoid hardcoding the number?
>>>>> Well, in the later series [1] this is defined via PCI_SLOT(~0) + 1 and 
>>>>> there is no dedicated
>>>>> constant for that. I can use the same here, e.g. s/32/PCI_SLOT(~0) + 1
>>>
>>> I would prefer if we introduce a new constant for that. This makes easier 
>>> to update the code if we decide to increase the number of virtual devices.
>>>
>>> However, I am still not sure how the 'else' part is related to this commit. 
>>> Can you please clarify it?
>> Well, yes, this is too early for this patch to introduce some future 
>> knowledge, so I'll instead have:
>>
>> unsigned int domain_vpci_get_num_mmio_handlers(struct domain *d)
>> {
>>       if ( !has_vpci(d) )
>>           return 0;
>>
>>       if ( is_hardware_domain(d) )
>>       {
>>           int ret = pci_host_iterate_bridges_and_count(d, 
>> vpci_get_num_handlers_cb);
>>
>>           return ret < 0 ? 0 : ret;
>>       }
>>
>>       /*
>>        * This is a guest domain:
>>        *
>>        * 1 for a single emulated host bridge's configuration space.
>>        */
>>       return 1;
>
> I am afraid that my question stands even with this approach. This patch is 
> only meant to handle the hardware domain, therefore the change seems to be 
> out of context.
>
> I would prefer if this change is done separately.
While I do agree that MSI part and virtual bus topology are not belonging to 
this
patch I can't agree with the rest: we already have MMIO handlers for guest 
domains
and we introduce domain_vpci_get_num_mmio_handlers which must also account
on guests and stay consistent.
So, despite the patch has "hardware domain" in its name it doesn't mean we 
should
break guests here.
Thus I do think the above is still correct wrt this patch.
>
> Cheers,
>
Thank you,
Oleksandr

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.