Re: [RFC PATCH 11/11] x86/MSI: Refactor x86 MSI code
On 2014/8/20 14:20, bharat.bhus...@freescale.com wrote: > > >> -Original Message- >> From: linux-pci-ow...@vger.kernel.org >> [mailto:linux-pci-ow...@vger.kernel.org] >> On Behalf Of Yijing Wang >> Sent: Saturday, July 26, 2014 8:39 AM >> To: linux-kernel@vger.kernel.org >> Cc: Xinwei Hu; Wuyun; Bjorn Helgaas; linux-...@vger.kernel.org; >> paul.mu...@huawei.com; James E.J. Bottomley; Marc Zyngier; linux-arm- >> ker...@lists.infradead.org; Russell King; linux-a...@vger.kernel.org; Basu >> Arnab-B45036; virtualizat...@lists.linux-foundation.org; Hanjun Guo; Yijing >> Wang >> Subject: [RFC PATCH 11/11] x86/MSI: Refactor x86 MSI code > > Please provide description about what this refactoring is? Also does other > architecture also need similar refactoring ? Sorry, I will update all description in my new proposal. I provided another patchset to decouple MSI driver and arch MSI code, link: http://marc.info/?l=linux-pci=140782732604433=2 Based that, there are few changes related to arch MSI code. I will rebas the patchset based that~ > > Thanks > -Bharat > >> >> Signed-off-by: Yijing Wang >> --- >> arch/x86/include/asm/io_apic.h |2 +- >> arch/x86/include/asm/irq_remapping.h |4 +- >> arch/x86/include/asm/pci.h |6 ++-- >> arch/x86/include/asm/x86_init.h | 10 +++--- >> arch/x86/kernel/apic/io_apic.c | 23 +++ >> arch/x86/kernel/x86_init.c | 12 >> drivers/iommu/amd_iommu.c| 16 ++ >> drivers/iommu/intel_irq_remapping.c |9 -- >> drivers/iommu/irq_remapping.c| 51 >> - >> drivers/iommu/irq_remapping.h|6 ++-- >> drivers/msi/msi.c|3 +- >> 11 files changed, 72 insertions(+), 70 deletions(-) >> >> diff --git a/arch/x86/include/asm/io_apic.h b/arch/x86/include/asm/io_apic.h >> index 90f97b4..692a90f 100644 >> --- a/arch/x86/include/asm/io_apic.h >> +++ b/arch/x86/include/asm/io_apic.h >> @@ -158,7 +158,7 @@ extern int native_setup_ioapic_entry(int, struct >> IO_APIC_route_entry *, >> struct io_apic_irq_attr *); >> extern void eoi_ioapic_irq(unsigned int irq, struct irq_cfg *cfg); >> >> -extern void native_compose_msi_msg(struct pci_dev *pdev, >> +extern void native_compose_msi_msg(struct msi_irqs *msi, >> unsigned int irq, unsigned int dest, >> struct msi_msg *msg, u8 hpet_id); >> extern void native_eoi_ioapic_pin(int apic, int pin, int vector); >> diff --git a/arch/x86/include/asm/irq_remapping.h >> b/arch/x86/include/asm/irq_remapping.h >> index b7747c4..a10003d 100644 >> --- a/arch/x86/include/asm/irq_remapping.h >> +++ b/arch/x86/include/asm/irq_remapping.h >> @@ -47,7 +47,7 @@ extern int setup_ioapic_remapped_entry(int irq, >> int vector, >> struct io_apic_irq_attr *attr); >> extern void free_remapped_irq(int irq); >> -extern void compose_remapped_msi_msg(struct pci_dev *pdev, >> +extern void compose_remapped_msi_msg(struct msi_irqs *msi, >> unsigned int irq, unsigned int dest, >> struct msi_msg *msg, u8 hpet_id); >> extern int setup_hpet_msi_remapped(unsigned int irq, unsigned int id); >> @@ -77,7 +77,7 @@ static inline int setup_ioapic_remapped_entry(int irq, >> return -ENODEV; >> } >> static inline void free_remapped_irq(int irq) { } >> -static inline void compose_remapped_msi_msg(struct pci_dev *pdev, >> +static inline void compose_remapped_msi_msg(struct msi_irqs *msi, >> unsigned int irq, unsigned int dest, >> struct msi_msg *msg, u8 hpet_id) >> { >> diff --git a/arch/x86/include/asm/pci.h b/arch/x86/include/asm/pci.h >> index 0892ea0..04c9ef6 100644 >> --- a/arch/x86/include/asm/pci.h >> +++ b/arch/x86/include/asm/pci.h >> @@ -96,10 +96,10 @@ extern void pci_iommu_alloc(void); >> #ifdef CONFIG_PCI_MSI >> /* implemented in arch/x86/kernel/apic/io_apic. */ >> struct msi_desc; >> -int native_setup_msi_irqs(struct pci_dev *dev, int nvec, int type); >> +int native_setup_msi_irqs(struct msi_irqs *msi, int nvec, int type); >> void native_teardown_msi_irq(unsigned int irq); >> -void native_restore_msi_irqs(struct pci_dev *dev); >> -int setup_msi_irq(struct pci_dev *dev, struct msi_de
RE: [RFC PATCH 11/11] x86/MSI: Refactor x86 MSI code
> -Original Message- > From: linux-pci-ow...@vger.kernel.org [mailto:linux-pci-ow...@vger.kernel.org] > On Behalf Of Yijing Wang > Sent: Saturday, July 26, 2014 8:39 AM > To: linux-kernel@vger.kernel.org > Cc: Xinwei Hu; Wuyun; Bjorn Helgaas; linux-...@vger.kernel.org; > paul.mu...@huawei.com; James E.J. Bottomley; Marc Zyngier; linux-arm- > ker...@lists.infradead.org; Russell King; linux-a...@vger.kernel.org; Basu > Arnab-B45036; virtualizat...@lists.linux-foundation.org; Hanjun Guo; Yijing > Wang > Subject: [RFC PATCH 11/11] x86/MSI: Refactor x86 MSI code Please provide description about what this refactoring is? Also does other architecture also need similar refactoring ? Thanks -Bharat > > Signed-off-by: Yijing Wang > --- > arch/x86/include/asm/io_apic.h |2 +- > arch/x86/include/asm/irq_remapping.h |4 +- > arch/x86/include/asm/pci.h |6 ++-- > arch/x86/include/asm/x86_init.h | 10 +++--- > arch/x86/kernel/apic/io_apic.c | 23 +++ > arch/x86/kernel/x86_init.c | 12 > drivers/iommu/amd_iommu.c| 16 ++ > drivers/iommu/intel_irq_remapping.c |9 -- > drivers/iommu/irq_remapping.c| 51 - > drivers/iommu/irq_remapping.h|6 ++-- > drivers/msi/msi.c|3 +- > 11 files changed, 72 insertions(+), 70 deletions(-) > > diff --git a/arch/x86/include/asm/io_apic.h b/arch/x86/include/asm/io_apic.h > index 90f97b4..692a90f 100644 > --- a/arch/x86/include/asm/io_apic.h > +++ b/arch/x86/include/asm/io_apic.h > @@ -158,7 +158,7 @@ extern int native_setup_ioapic_entry(int, struct > IO_APIC_route_entry *, >struct io_apic_irq_attr *); > extern void eoi_ioapic_irq(unsigned int irq, struct irq_cfg *cfg); > > -extern void native_compose_msi_msg(struct pci_dev *pdev, > +extern void native_compose_msi_msg(struct msi_irqs *msi, > unsigned int irq, unsigned int dest, > struct msi_msg *msg, u8 hpet_id); > extern void native_eoi_ioapic_pin(int apic, int pin, int vector); > diff --git a/arch/x86/include/asm/irq_remapping.h > b/arch/x86/include/asm/irq_remapping.h > index b7747c4..a10003d 100644 > --- a/arch/x86/include/asm/irq_remapping.h > +++ b/arch/x86/include/asm/irq_remapping.h > @@ -47,7 +47,7 @@ extern int setup_ioapic_remapped_entry(int irq, > int vector, > struct io_apic_irq_attr *attr); > extern void free_remapped_irq(int irq); > -extern void compose_remapped_msi_msg(struct pci_dev *pdev, > +extern void compose_remapped_msi_msg(struct msi_irqs *msi, >unsigned int irq, unsigned int dest, >struct msi_msg *msg, u8 hpet_id); > extern int setup_hpet_msi_remapped(unsigned int irq, unsigned int id); > @@ -77,7 +77,7 @@ static inline int setup_ioapic_remapped_entry(int irq, > return -ENODEV; > } > static inline void free_remapped_irq(int irq) { } > -static inline void compose_remapped_msi_msg(struct pci_dev *pdev, > +static inline void compose_remapped_msi_msg(struct msi_irqs *msi, > unsigned int irq, unsigned int dest, > struct msi_msg *msg, u8 hpet_id) > { > diff --git a/arch/x86/include/asm/pci.h b/arch/x86/include/asm/pci.h > index 0892ea0..04c9ef6 100644 > --- a/arch/x86/include/asm/pci.h > +++ b/arch/x86/include/asm/pci.h > @@ -96,10 +96,10 @@ extern void pci_iommu_alloc(void); > #ifdef CONFIG_PCI_MSI > /* implemented in arch/x86/kernel/apic/io_apic. */ > struct msi_desc; > -int native_setup_msi_irqs(struct pci_dev *dev, int nvec, int type); > +int native_setup_msi_irqs(struct msi_irqs *msi, int nvec, int type); > void native_teardown_msi_irq(unsigned int irq); > -void native_restore_msi_irqs(struct pci_dev *dev); > -int setup_msi_irq(struct pci_dev *dev, struct msi_desc *msidesc, > +void native_restore_msi_irqs(struct msi_irqs *msi); > +int setup_msi_irq(struct msi_irqs *msi, struct msi_desc *msidesc, > unsigned int irq_base, unsigned int irq_offset); > #else > #define native_setup_msi_irqsNULL > diff --git a/arch/x86/include/asm/x86_init.h b/arch/x86/include/asm/x86_init.h > index e45e4da..8e42f17 100644 > --- a/arch/x86/include/asm/x86_init.h > +++ b/arch/x86/include/asm/x86_init.h > @@ -170,18 +170,18 @@ struct x86_platform_ops { > void (*apic_post_init)(void); > }; > > -struct pci_dev; > +struct msi_irqs; > struct msi_msg; > struct msi_desc; > > s
RE: [RFC PATCH 11/11] x86/MSI: Refactor x86 MSI code
-Original Message- From: linux-pci-ow...@vger.kernel.org [mailto:linux-pci-ow...@vger.kernel.org] On Behalf Of Yijing Wang Sent: Saturday, July 26, 2014 8:39 AM To: linux-kernel@vger.kernel.org Cc: Xinwei Hu; Wuyun; Bjorn Helgaas; linux-...@vger.kernel.org; paul.mu...@huawei.com; James E.J. Bottomley; Marc Zyngier; linux-arm- ker...@lists.infradead.org; Russell King; linux-a...@vger.kernel.org; Basu Arnab-B45036; virtualizat...@lists.linux-foundation.org; Hanjun Guo; Yijing Wang Subject: [RFC PATCH 11/11] x86/MSI: Refactor x86 MSI code Please provide description about what this refactoring is? Also does other architecture also need similar refactoring ? Thanks -Bharat Signed-off-by: Yijing Wang wangyij...@huawei.com --- arch/x86/include/asm/io_apic.h |2 +- arch/x86/include/asm/irq_remapping.h |4 +- arch/x86/include/asm/pci.h |6 ++-- arch/x86/include/asm/x86_init.h | 10 +++--- arch/x86/kernel/apic/io_apic.c | 23 +++ arch/x86/kernel/x86_init.c | 12 drivers/iommu/amd_iommu.c| 16 ++ drivers/iommu/intel_irq_remapping.c |9 -- drivers/iommu/irq_remapping.c| 51 - drivers/iommu/irq_remapping.h|6 ++-- drivers/msi/msi.c|3 +- 11 files changed, 72 insertions(+), 70 deletions(-) diff --git a/arch/x86/include/asm/io_apic.h b/arch/x86/include/asm/io_apic.h index 90f97b4..692a90f 100644 --- a/arch/x86/include/asm/io_apic.h +++ b/arch/x86/include/asm/io_apic.h @@ -158,7 +158,7 @@ extern int native_setup_ioapic_entry(int, struct IO_APIC_route_entry *, struct io_apic_irq_attr *); extern void eoi_ioapic_irq(unsigned int irq, struct irq_cfg *cfg); -extern void native_compose_msi_msg(struct pci_dev *pdev, +extern void native_compose_msi_msg(struct msi_irqs *msi, unsigned int irq, unsigned int dest, struct msi_msg *msg, u8 hpet_id); extern void native_eoi_ioapic_pin(int apic, int pin, int vector); diff --git a/arch/x86/include/asm/irq_remapping.h b/arch/x86/include/asm/irq_remapping.h index b7747c4..a10003d 100644 --- a/arch/x86/include/asm/irq_remapping.h +++ b/arch/x86/include/asm/irq_remapping.h @@ -47,7 +47,7 @@ extern int setup_ioapic_remapped_entry(int irq, int vector, struct io_apic_irq_attr *attr); extern void free_remapped_irq(int irq); -extern void compose_remapped_msi_msg(struct pci_dev *pdev, +extern void compose_remapped_msi_msg(struct msi_irqs *msi, unsigned int irq, unsigned int dest, struct msi_msg *msg, u8 hpet_id); extern int setup_hpet_msi_remapped(unsigned int irq, unsigned int id); @@ -77,7 +77,7 @@ static inline int setup_ioapic_remapped_entry(int irq, return -ENODEV; } static inline void free_remapped_irq(int irq) { } -static inline void compose_remapped_msi_msg(struct pci_dev *pdev, +static inline void compose_remapped_msi_msg(struct msi_irqs *msi, unsigned int irq, unsigned int dest, struct msi_msg *msg, u8 hpet_id) { diff --git a/arch/x86/include/asm/pci.h b/arch/x86/include/asm/pci.h index 0892ea0..04c9ef6 100644 --- a/arch/x86/include/asm/pci.h +++ b/arch/x86/include/asm/pci.h @@ -96,10 +96,10 @@ extern void pci_iommu_alloc(void); #ifdef CONFIG_PCI_MSI /* implemented in arch/x86/kernel/apic/io_apic. */ struct msi_desc; -int native_setup_msi_irqs(struct pci_dev *dev, int nvec, int type); +int native_setup_msi_irqs(struct msi_irqs *msi, int nvec, int type); void native_teardown_msi_irq(unsigned int irq); -void native_restore_msi_irqs(struct pci_dev *dev); -int setup_msi_irq(struct pci_dev *dev, struct msi_desc *msidesc, +void native_restore_msi_irqs(struct msi_irqs *msi); +int setup_msi_irq(struct msi_irqs *msi, struct msi_desc *msidesc, unsigned int irq_base, unsigned int irq_offset); #else #define native_setup_msi_irqsNULL diff --git a/arch/x86/include/asm/x86_init.h b/arch/x86/include/asm/x86_init.h index e45e4da..8e42f17 100644 --- a/arch/x86/include/asm/x86_init.h +++ b/arch/x86/include/asm/x86_init.h @@ -170,18 +170,18 @@ struct x86_platform_ops { void (*apic_post_init)(void); }; -struct pci_dev; +struct msi_irqs; struct msi_msg; struct msi_desc; struct x86_msi_ops { - int (*setup_msi_irqs)(struct pci_dev *dev, int nvec, int type); - void (*compose_msi_msg)(struct pci_dev *dev, unsigned int irq, + int (*setup_msi_irqs)(struct msi_irqs *msi, int nvec, int type); + void (*compose_msi_msg)(struct msi_irqs *msi, unsigned int irq, unsigned int dest, struct
Re: [RFC PATCH 11/11] x86/MSI: Refactor x86 MSI code
On 2014/8/20 14:20, bharat.bhus...@freescale.com wrote: -Original Message- From: linux-pci-ow...@vger.kernel.org [mailto:linux-pci-ow...@vger.kernel.org] On Behalf Of Yijing Wang Sent: Saturday, July 26, 2014 8:39 AM To: linux-kernel@vger.kernel.org Cc: Xinwei Hu; Wuyun; Bjorn Helgaas; linux-...@vger.kernel.org; paul.mu...@huawei.com; James E.J. Bottomley; Marc Zyngier; linux-arm- ker...@lists.infradead.org; Russell King; linux-a...@vger.kernel.org; Basu Arnab-B45036; virtualizat...@lists.linux-foundation.org; Hanjun Guo; Yijing Wang Subject: [RFC PATCH 11/11] x86/MSI: Refactor x86 MSI code Please provide description about what this refactoring is? Also does other architecture also need similar refactoring ? Sorry, I will update all description in my new proposal. I provided another patchset to decouple MSI driver and arch MSI code, link: http://marc.info/?l=linux-pcim=140782732604433w=2 Based that, there are few changes related to arch MSI code. I will rebas the patchset based that~ Thanks -Bharat Signed-off-by: Yijing Wang wangyij...@huawei.com --- arch/x86/include/asm/io_apic.h |2 +- arch/x86/include/asm/irq_remapping.h |4 +- arch/x86/include/asm/pci.h |6 ++-- arch/x86/include/asm/x86_init.h | 10 +++--- arch/x86/kernel/apic/io_apic.c | 23 +++ arch/x86/kernel/x86_init.c | 12 drivers/iommu/amd_iommu.c| 16 ++ drivers/iommu/intel_irq_remapping.c |9 -- drivers/iommu/irq_remapping.c| 51 - drivers/iommu/irq_remapping.h|6 ++-- drivers/msi/msi.c|3 +- 11 files changed, 72 insertions(+), 70 deletions(-) diff --git a/arch/x86/include/asm/io_apic.h b/arch/x86/include/asm/io_apic.h index 90f97b4..692a90f 100644 --- a/arch/x86/include/asm/io_apic.h +++ b/arch/x86/include/asm/io_apic.h @@ -158,7 +158,7 @@ extern int native_setup_ioapic_entry(int, struct IO_APIC_route_entry *, struct io_apic_irq_attr *); extern void eoi_ioapic_irq(unsigned int irq, struct irq_cfg *cfg); -extern void native_compose_msi_msg(struct pci_dev *pdev, +extern void native_compose_msi_msg(struct msi_irqs *msi, unsigned int irq, unsigned int dest, struct msi_msg *msg, u8 hpet_id); extern void native_eoi_ioapic_pin(int apic, int pin, int vector); diff --git a/arch/x86/include/asm/irq_remapping.h b/arch/x86/include/asm/irq_remapping.h index b7747c4..a10003d 100644 --- a/arch/x86/include/asm/irq_remapping.h +++ b/arch/x86/include/asm/irq_remapping.h @@ -47,7 +47,7 @@ extern int setup_ioapic_remapped_entry(int irq, int vector, struct io_apic_irq_attr *attr); extern void free_remapped_irq(int irq); -extern void compose_remapped_msi_msg(struct pci_dev *pdev, +extern void compose_remapped_msi_msg(struct msi_irqs *msi, unsigned int irq, unsigned int dest, struct msi_msg *msg, u8 hpet_id); extern int setup_hpet_msi_remapped(unsigned int irq, unsigned int id); @@ -77,7 +77,7 @@ static inline int setup_ioapic_remapped_entry(int irq, return -ENODEV; } static inline void free_remapped_irq(int irq) { } -static inline void compose_remapped_msi_msg(struct pci_dev *pdev, +static inline void compose_remapped_msi_msg(struct msi_irqs *msi, unsigned int irq, unsigned int dest, struct msi_msg *msg, u8 hpet_id) { diff --git a/arch/x86/include/asm/pci.h b/arch/x86/include/asm/pci.h index 0892ea0..04c9ef6 100644 --- a/arch/x86/include/asm/pci.h +++ b/arch/x86/include/asm/pci.h @@ -96,10 +96,10 @@ extern void pci_iommu_alloc(void); #ifdef CONFIG_PCI_MSI /* implemented in arch/x86/kernel/apic/io_apic. */ struct msi_desc; -int native_setup_msi_irqs(struct pci_dev *dev, int nvec, int type); +int native_setup_msi_irqs(struct msi_irqs *msi, int nvec, int type); void native_teardown_msi_irq(unsigned int irq); -void native_restore_msi_irqs(struct pci_dev *dev); -int setup_msi_irq(struct pci_dev *dev, struct msi_desc *msidesc, +void native_restore_msi_irqs(struct msi_irqs *msi); +int setup_msi_irq(struct msi_irqs *msi, struct msi_desc *msidesc, unsigned int irq_base, unsigned int irq_offset); #else #define native_setup_msi_irqs NULL diff --git a/arch/x86/include/asm/x86_init.h b/arch/x86/include/asm/x86_init.h index e45e4da..8e42f17 100644 --- a/arch/x86/include/asm/x86_init.h +++ b/arch/x86/include/asm/x86_init.h @@ -170,18 +170,18 @@ struct x86_platform_ops { void (*apic_post_init)(void); }; -struct pci_dev; +struct msi_irqs; struct msi_msg; struct msi_desc; struct x86_msi_ops
[RFC PATCH 11/11] x86/MSI: Refactor x86 MSI code
Signed-off-by: Yijing Wang --- arch/x86/include/asm/io_apic.h |2 +- arch/x86/include/asm/irq_remapping.h |4 +- arch/x86/include/asm/pci.h |6 ++-- arch/x86/include/asm/x86_init.h | 10 +++--- arch/x86/kernel/apic/io_apic.c | 23 +++ arch/x86/kernel/x86_init.c | 12 drivers/iommu/amd_iommu.c| 16 ++ drivers/iommu/intel_irq_remapping.c |9 -- drivers/iommu/irq_remapping.c| 51 - drivers/iommu/irq_remapping.h|6 ++-- drivers/msi/msi.c|3 +- 11 files changed, 72 insertions(+), 70 deletions(-) diff --git a/arch/x86/include/asm/io_apic.h b/arch/x86/include/asm/io_apic.h index 90f97b4..692a90f 100644 --- a/arch/x86/include/asm/io_apic.h +++ b/arch/x86/include/asm/io_apic.h @@ -158,7 +158,7 @@ extern int native_setup_ioapic_entry(int, struct IO_APIC_route_entry *, struct io_apic_irq_attr *); extern void eoi_ioapic_irq(unsigned int irq, struct irq_cfg *cfg); -extern void native_compose_msi_msg(struct pci_dev *pdev, +extern void native_compose_msi_msg(struct msi_irqs *msi, unsigned int irq, unsigned int dest, struct msi_msg *msg, u8 hpet_id); extern void native_eoi_ioapic_pin(int apic, int pin, int vector); diff --git a/arch/x86/include/asm/irq_remapping.h b/arch/x86/include/asm/irq_remapping.h index b7747c4..a10003d 100644 --- a/arch/x86/include/asm/irq_remapping.h +++ b/arch/x86/include/asm/irq_remapping.h @@ -47,7 +47,7 @@ extern int setup_ioapic_remapped_entry(int irq, int vector, struct io_apic_irq_attr *attr); extern void free_remapped_irq(int irq); -extern void compose_remapped_msi_msg(struct pci_dev *pdev, +extern void compose_remapped_msi_msg(struct msi_irqs *msi, unsigned int irq, unsigned int dest, struct msi_msg *msg, u8 hpet_id); extern int setup_hpet_msi_remapped(unsigned int irq, unsigned int id); @@ -77,7 +77,7 @@ static inline int setup_ioapic_remapped_entry(int irq, return -ENODEV; } static inline void free_remapped_irq(int irq) { } -static inline void compose_remapped_msi_msg(struct pci_dev *pdev, +static inline void compose_remapped_msi_msg(struct msi_irqs *msi, unsigned int irq, unsigned int dest, struct msi_msg *msg, u8 hpet_id) { diff --git a/arch/x86/include/asm/pci.h b/arch/x86/include/asm/pci.h index 0892ea0..04c9ef6 100644 --- a/arch/x86/include/asm/pci.h +++ b/arch/x86/include/asm/pci.h @@ -96,10 +96,10 @@ extern void pci_iommu_alloc(void); #ifdef CONFIG_PCI_MSI /* implemented in arch/x86/kernel/apic/io_apic. */ struct msi_desc; -int native_setup_msi_irqs(struct pci_dev *dev, int nvec, int type); +int native_setup_msi_irqs(struct msi_irqs *msi, int nvec, int type); void native_teardown_msi_irq(unsigned int irq); -void native_restore_msi_irqs(struct pci_dev *dev); -int setup_msi_irq(struct pci_dev *dev, struct msi_desc *msidesc, +void native_restore_msi_irqs(struct msi_irqs *msi); +int setup_msi_irq(struct msi_irqs *msi, struct msi_desc *msidesc, unsigned int irq_base, unsigned int irq_offset); #else #define native_setup_msi_irqs NULL diff --git a/arch/x86/include/asm/x86_init.h b/arch/x86/include/asm/x86_init.h index e45e4da..8e42f17 100644 --- a/arch/x86/include/asm/x86_init.h +++ b/arch/x86/include/asm/x86_init.h @@ -170,18 +170,18 @@ struct x86_platform_ops { void (*apic_post_init)(void); }; -struct pci_dev; +struct msi_irqs; struct msi_msg; struct msi_desc; struct x86_msi_ops { - int (*setup_msi_irqs)(struct pci_dev *dev, int nvec, int type); - void (*compose_msi_msg)(struct pci_dev *dev, unsigned int irq, + int (*setup_msi_irqs)(struct msi_irqs *msi, int nvec, int type); + void (*compose_msi_msg)(struct msi_irqs *msi, unsigned int irq, unsigned int dest, struct msi_msg *msg, u8 hpet_id); void (*teardown_msi_irq)(unsigned int irq); - void (*teardown_msi_irqs)(struct pci_dev *dev); - void (*restore_msi_irqs)(struct pci_dev *dev); + void (*teardown_msi_irqs)(struct msi_irqs *msi); + void (*restore_msi_irqs)(struct msi_irqs *msi); int (*setup_hpet_msi)(unsigned int irq, unsigned int id); u32 (*msi_mask_irq)(struct msi_desc *desc, u32 mask, u32 flag); u32 (*msix_mask_irq)(struct msi_desc *desc, u32 flag); diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c index b833042..3cb4a6a 100644 --- a/arch/x86/kernel/apic/io_apic.c +++ b/arch/x86/kernel/apic/io_apic.c @@ -2939,7 +2939,7 @@ void arch_teardown_hwirq(unsigned int irq) /*
[RFC PATCH 11/11] x86/MSI: Refactor x86 MSI code
Signed-off-by: Yijing Wang wangyij...@huawei.com --- arch/x86/include/asm/io_apic.h |2 +- arch/x86/include/asm/irq_remapping.h |4 +- arch/x86/include/asm/pci.h |6 ++-- arch/x86/include/asm/x86_init.h | 10 +++--- arch/x86/kernel/apic/io_apic.c | 23 +++ arch/x86/kernel/x86_init.c | 12 drivers/iommu/amd_iommu.c| 16 ++ drivers/iommu/intel_irq_remapping.c |9 -- drivers/iommu/irq_remapping.c| 51 - drivers/iommu/irq_remapping.h|6 ++-- drivers/msi/msi.c|3 +- 11 files changed, 72 insertions(+), 70 deletions(-) diff --git a/arch/x86/include/asm/io_apic.h b/arch/x86/include/asm/io_apic.h index 90f97b4..692a90f 100644 --- a/arch/x86/include/asm/io_apic.h +++ b/arch/x86/include/asm/io_apic.h @@ -158,7 +158,7 @@ extern int native_setup_ioapic_entry(int, struct IO_APIC_route_entry *, struct io_apic_irq_attr *); extern void eoi_ioapic_irq(unsigned int irq, struct irq_cfg *cfg); -extern void native_compose_msi_msg(struct pci_dev *pdev, +extern void native_compose_msi_msg(struct msi_irqs *msi, unsigned int irq, unsigned int dest, struct msi_msg *msg, u8 hpet_id); extern void native_eoi_ioapic_pin(int apic, int pin, int vector); diff --git a/arch/x86/include/asm/irq_remapping.h b/arch/x86/include/asm/irq_remapping.h index b7747c4..a10003d 100644 --- a/arch/x86/include/asm/irq_remapping.h +++ b/arch/x86/include/asm/irq_remapping.h @@ -47,7 +47,7 @@ extern int setup_ioapic_remapped_entry(int irq, int vector, struct io_apic_irq_attr *attr); extern void free_remapped_irq(int irq); -extern void compose_remapped_msi_msg(struct pci_dev *pdev, +extern void compose_remapped_msi_msg(struct msi_irqs *msi, unsigned int irq, unsigned int dest, struct msi_msg *msg, u8 hpet_id); extern int setup_hpet_msi_remapped(unsigned int irq, unsigned int id); @@ -77,7 +77,7 @@ static inline int setup_ioapic_remapped_entry(int irq, return -ENODEV; } static inline void free_remapped_irq(int irq) { } -static inline void compose_remapped_msi_msg(struct pci_dev *pdev, +static inline void compose_remapped_msi_msg(struct msi_irqs *msi, unsigned int irq, unsigned int dest, struct msi_msg *msg, u8 hpet_id) { diff --git a/arch/x86/include/asm/pci.h b/arch/x86/include/asm/pci.h index 0892ea0..04c9ef6 100644 --- a/arch/x86/include/asm/pci.h +++ b/arch/x86/include/asm/pci.h @@ -96,10 +96,10 @@ extern void pci_iommu_alloc(void); #ifdef CONFIG_PCI_MSI /* implemented in arch/x86/kernel/apic/io_apic. */ struct msi_desc; -int native_setup_msi_irqs(struct pci_dev *dev, int nvec, int type); +int native_setup_msi_irqs(struct msi_irqs *msi, int nvec, int type); void native_teardown_msi_irq(unsigned int irq); -void native_restore_msi_irqs(struct pci_dev *dev); -int setup_msi_irq(struct pci_dev *dev, struct msi_desc *msidesc, +void native_restore_msi_irqs(struct msi_irqs *msi); +int setup_msi_irq(struct msi_irqs *msi, struct msi_desc *msidesc, unsigned int irq_base, unsigned int irq_offset); #else #define native_setup_msi_irqs NULL diff --git a/arch/x86/include/asm/x86_init.h b/arch/x86/include/asm/x86_init.h index e45e4da..8e42f17 100644 --- a/arch/x86/include/asm/x86_init.h +++ b/arch/x86/include/asm/x86_init.h @@ -170,18 +170,18 @@ struct x86_platform_ops { void (*apic_post_init)(void); }; -struct pci_dev; +struct msi_irqs; struct msi_msg; struct msi_desc; struct x86_msi_ops { - int (*setup_msi_irqs)(struct pci_dev *dev, int nvec, int type); - void (*compose_msi_msg)(struct pci_dev *dev, unsigned int irq, + int (*setup_msi_irqs)(struct msi_irqs *msi, int nvec, int type); + void (*compose_msi_msg)(struct msi_irqs *msi, unsigned int irq, unsigned int dest, struct msi_msg *msg, u8 hpet_id); void (*teardown_msi_irq)(unsigned int irq); - void (*teardown_msi_irqs)(struct pci_dev *dev); - void (*restore_msi_irqs)(struct pci_dev *dev); + void (*teardown_msi_irqs)(struct msi_irqs *msi); + void (*restore_msi_irqs)(struct msi_irqs *msi); int (*setup_hpet_msi)(unsigned int irq, unsigned int id); u32 (*msi_mask_irq)(struct msi_desc *desc, u32 mask, u32 flag); u32 (*msix_mask_irq)(struct msi_desc *desc, u32 flag); diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c index b833042..3cb4a6a 100644 --- a/arch/x86/kernel/apic/io_apic.c +++ b/arch/x86/kernel/apic/io_apic.c @@ -2939,7 +2939,7 @@ void