On 12.06.2025 11:29, Jiqian Chen wrote: > --- a/xen/include/xen/vpci.h > +++ b/xen/include/xen/vpci.h > @@ -13,11 +13,12 @@ typedef uint32_t vpci_read_t(const struct pci_dev *pdev, > unsigned int reg, > typedef void vpci_write_t(const struct pci_dev *pdev, unsigned int reg, > uint32_t val, void *data); > > -typedef int vpci_register_init_t(struct pci_dev *dev); > - > -#define VPCI_PRIORITY_HIGH "1" > -#define VPCI_PRIORITY_MIDDLE "5" > -#define VPCI_PRIORITY_LOW "9" > +typedef struct { > + unsigned int id; > + bool is_ext; > + int (*init)(struct pci_dev *pdev); > + int (*cleanup)(struct pci_dev *pdev);
Is const really not possible to add to at least one of these two? > +} vpci_capability_t; As you have it here, ... > @@ -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 = { \ ... _t suffixes generally designate types. I don't think we should abuse that suffix for an identifier of a variable. Jan