[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 |