|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v6 3/8] vpci: Hide legacy capability when it fails to initialize
On 2025/6/18 22:09, Jan Beulich wrote:
> On 12.06.2025 11:29, Jiqian Chen wrote:
>> --- a/xen/drivers/vpci/vpci.c
>> +++ b/xen/drivers/vpci/vpci.c
>> @@ -83,6 +83,88 @@ static int assign_virtual_sbdf(struct pci_dev *pdev)
>>
>> #endif /* CONFIG_HAS_VPCI_GUEST_SUPPORT */
>>
>> +static struct vpci_register *vpci_get_register(struct vpci *vpci,
>> + unsigned int offset,
>> + unsigned int size)
>> +{
>> + struct vpci_register *r;
>> +
>> + ASSERT(spin_is_locked(&vpci->lock));
>> +
>> + list_for_each_entry ( r, &vpci->handlers, node )
>> + {
>> + if ( r->offset == offset && r->size == size )
>> + return r;
>> +
>> + if ( offset <= r->offset )
>> + break;
>> + }
>> +
>> + return NULL;
>> +}
>> +
>> +static struct vpci_register *vpci_get_previous_cap_register(
>> + struct vpci *vpci, unsigned int offset)
>> +{
>> + uint32_t next;
>> + struct vpci_register *r;
>> +
>> + if ( offset < 0x40 )
>> + {
>> + ASSERT_UNREACHABLE();
>> + return NULL;
>> + }
>> +
>> + for ( r = vpci_get_register(vpci, PCI_CAPABILITY_LIST, 1); r;
>> + r = next >= 0x40 ? vpci_get_register(vpci,
>> + next + PCI_CAP_LIST_NEXT, 1)
>> + : NULL )
>> + {
>> + next = (uint32_t)(uintptr_t)r->private;
>> + ASSERT(next == (uintptr_t)r->private);
>> + if ( next == offset )
>> + break;
>> + }
>> +
>> + return r;
>> +}
>> +
>> +static int vpci_capability_hide(struct pci_dev *pdev, unsigned int cap)
>
> I really only noticed it in the next patch, but the question applies equally
> here: Any reason the first parameter isn't pointer-to-const?
Will change the parameters to be const of my new functions in this and next
patches.
>
> Jan
--
Best regards,
Jiqian Chen.
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |