|
[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
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |