On Fri, Jul 31, 2026 at 03:34:24PM -0700, Mukesh R wrote: > On Hyper-V, most hypercalls related to PCI passthru to map/unmap regions, > interrupts, etc need a device ID as a parameter. This device ID refers > to that specific device during the lifetime of passthru. So, > make hv_build_devid_type_pci() public and change return type to u64 to > enforce it's size.
s/it's/its/ This patch doesn't have anything to do with the PCI core specifically, so the "PCI: hv:" subject line looks a little funny and doesn't look anything like previous history of these two files. > Signed-off-by: Mukesh R <[email protected]> > Reviewed-by: Souradeep Chakrabarti <[email protected]> > --- > arch/x86/hyperv/irqdomain.c | 9 +++++---- > arch/x86/include/asm/mshyperv.h | 6 ++++++ > 2 files changed, 11 insertions(+), 4 deletions(-) > > diff --git a/arch/x86/hyperv/irqdomain.c b/arch/x86/hyperv/irqdomain.c > index b3ad50a874dc..8780573a4332 100644 > --- a/arch/x86/hyperv/irqdomain.c > +++ b/arch/x86/hyperv/irqdomain.c > @@ -112,7 +112,7 @@ static int get_rid_cb(struct pci_dev *pdev, u16 alias, > void *data) > return 0; > } > > -static union hv_device_id hv_build_devid_type_pci(struct pci_dev *pdev) > +u64 hv_build_devid_type_pci(struct pci_dev *pdev) > { > int pos; > union hv_device_id hv_devid; > @@ -172,8 +172,9 @@ static union hv_device_id hv_build_devid_type_pci(struct > pci_dev *pdev) > } > > out: > - return hv_devid; > + return hv_devid.as_uint64; > } > +EXPORT_SYMBOL_GPL(hv_build_devid_type_pci); > > /* > * hv_map_msi_interrupt() - Map the MSI IRQ in the hypervisor. > @@ -196,7 +197,7 @@ int hv_map_msi_interrupt(struct irq_data *data, > > msidesc = irq_data_get_msi_desc(data); > pdev = msi_desc_to_pci_dev(msidesc); > - hv_devid = hv_build_devid_type_pci(pdev); > + hv_devid.as_uint64 = hv_build_devid_type_pci(pdev); > cpu = cpumask_first(irq_data_get_effective_affinity_mask(data)); > > return hv_map_interrupt(hv_devid, false, cpu, cfg->vector, > @@ -271,7 +272,7 @@ static int hv_unmap_msi_interrupt(struct pci_dev *pdev, > { > union hv_device_id hv_devid; > > - hv_devid = hv_build_devid_type_pci(pdev); > + hv_devid.as_uint64 = hv_build_devid_type_pci(pdev); > return hv_unmap_interrupt(hv_devid.as_uint64, irq_entry); > } > > diff --git a/arch/x86/include/asm/mshyperv.h b/arch/x86/include/asm/mshyperv.h > index f64393e853ee..8ebbd1cb7c8c 100644 > --- a/arch/x86/include/asm/mshyperv.h > +++ b/arch/x86/include/asm/mshyperv.h > @@ -248,6 +248,12 @@ void hv_crash_asm_end(void); > static inline void hv_root_crash_init(void) {} > #endif /* CONFIG_MSHV_ROOT && CONFIG_CRASH_DUMP */ > > +#ifdef CONFIG_PCI_MSI > +u64 hv_build_devid_type_pci(struct pci_dev *pdev); > +#else > +static inline u64 hv_build_devid_type_pci(struct pci_dev *pdev) { return 0; } > +#endif > + > #else /* CONFIG_HYPERV */ > static inline void hyperv_init(void) {} > static inline void hyperv_setup_mmu_ops(void) {} > -- > 2.51.2.vfs.0.1 >

