|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v6 2/8] vpci: Refactor REGISTER_VPCI_INIT
On 2025/6/20 14:38, Jan Beulich wrote:
> On 19.06.2025 08:39, Chen, Jiqian wrote:
>> On 2025/6/18 22:05, Jan Beulich wrote:
>>> On 12.06.2025 11:29, Jiqian Chen wrote:
>>>> --- a/xen/drivers/vpci/msix.c
>>>> +++ b/xen/drivers/vpci/msix.c
>>>> @@ -703,9 +703,13 @@ static int cf_check init_msix(struct pci_dev *pdev)
>>>> pdev->vpci->msix = msix;
>>>> list_add(&msix->next, &d->arch.hvm.msix_tables);
>>>>
>>>> - return 0;
>>>> + spin_lock(&pdev->vpci->lock);
>>>> + rc = vpci_make_msix_hole(pdev);
>>>> + spin_unlock(&pdev->vpci->lock);
>>>
>>> If you add a call to vpci_make_msix_hole() here, doesn't it need (or at
>>> least want) removing somewhere else? Otherwise maybe a code comment is
>>> warranted next to the new call site?
Sorry, I misunderstood you in my last email.
After here's change, it seems the call in modify_decoding() is redundant.
What's your taste? Removing the call in modify_decoding() or adding a code
comment?
>> The removing operation in modify_bars() and vpci_deassign_device() is not
>> enough?
>
> I fear I don't understand this reply of yours. Which suggests that the patch
> description may want extending as to this part of the change.
>
>>>> @@ -29,9 +30,22 @@ typedef int vpci_register_init_t(struct pci_dev *dev);
>>>> */
>>>> #define VPCI_MAX_VIRT_DEV (PCI_SLOT(~0) + 1)
>>>>
>>>> -#define REGISTER_VPCI_INIT(x, p) \
>>>> - static vpci_register_init_t *const x##_entry \
>>>> - __used_section(".data.vpci." p) = (x)
>>>> +#define REGISTER_VPCI_CAPABILITY(cap, finit, fclean, ext) \
>>>> + static const vpci_capability_t finit##_t = { \
>>>> + .id = (cap), \
>>>> + .init = (finit), \
>>>> + .cleanup = (fclean), \
>>>> + .is_ext = (ext), \
>>>> + }; \
>>>> + static const vpci_capability_t *const finit##_entry \
>>>> + __used_section(".data.rel.ro.vpci") = &finit##_t
>>>
>>> Could you remind me why the extra level of indirection is necessary here?
>>> That is, why can't .data.rel.ro.vpci be an array of vpci_capability_t?
>> You mean I should change to be:
>> #define REGISTER_VPCI_CAPABILITY(cap, finit, fclean, ext) \
>> static const vpci_capability_t finit##_t \
>> __used_section(".data.rel.ro.vpci") = { \
>> .id = (cap), \
>> .init = (finit), \
>> .cleanup = (fclean), \
>> .is_ext = (ext), \
>> }
>>
>> Right?
>
> Yes, subject to the earlier comments on the identifier choice.
Got it.
One more question, if change to be that, then how should I modify the
definition of VPCI_ARRAY?
Is POINTER_ALIGN still right?
Since I encountered errors that the values of __start_vpci_array are not right
when I use them in vpci_init_capabilities().
>
> Jan
--
Best regards,
Jiqian Chen.
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |