[PATCH 15/19] x86, irq: Move irq_remapped() check into free_remapped_irq

2012-11-20 Thread Joerg Roedel
The function is called unconditionally now in IO-APIC code
removing another irq_remapped() check from x86 core code.

Signed-off-by: Joerg Roedel 
Acked-by: Sebastian Andrzej Siewior 
---
 arch/x86/kernel/apic/io_apic.c |4 ++--
 drivers/iommu/irq_remapping.c  |5 -
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c
index f8c290b..73f1bf2 100644
--- a/arch/x86/kernel/apic/io_apic.c
+++ b/arch/x86/kernel/apic/io_apic.c
@@ -2994,8 +2994,8 @@ void destroy_irq(unsigned int irq)
 
irq_set_status_flags(irq, IRQ_NOREQUEST|IRQ_NOPROBE);
 
-   if (irq_remapped(cfg))
-   free_remapped_irq(irq);
+   free_remapped_irq(irq);
+
raw_spin_lock_irqsave(&vector_lock, flags);
__clear_irq_vector(irq, cfg);
raw_spin_unlock_irqrestore(&vector_lock, flags);
diff --git a/drivers/iommu/irq_remapping.c b/drivers/iommu/irq_remapping.c
index 97b5023..5053482 100644
--- a/drivers/iommu/irq_remapping.c
+++ b/drivers/iommu/irq_remapping.c
@@ -227,10 +227,13 @@ int set_remapped_irq_affinity(struct irq_data *data, 
const struct cpumask *mask,
 
 void free_remapped_irq(int irq)
 {
+   struct irq_cfg *cfg = irq_get_chip_data(irq);
+
if (!remap_ops || !remap_ops->free_irq)
return;
 
-   remap_ops->free_irq(irq);
+   if (irq_remapped(cfg))
+   remap_ops->free_irq(irq);
 }
 
 void compose_remapped_msi_msg(struct pci_dev *pdev,
-- 
1.7.9.5


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH 15/19] x86, irq: Move irq_remapped() check into free_remapped_irq

2012-09-26 Thread Joerg Roedel
The function is called unconditionally now in IO-APIC code
removing another irq_remapped() check from x86 core code.

Signed-off-by: Joerg Roedel 
---
 arch/x86/kernel/apic/io_apic.c |4 ++--
 drivers/iommu/irq_remapping.c  |5 -
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c
index dd555e7..87a0fd1 100644
--- a/arch/x86/kernel/apic/io_apic.c
+++ b/arch/x86/kernel/apic/io_apic.c
@@ -2991,8 +2991,8 @@ void destroy_irq(unsigned int irq)
 
irq_set_status_flags(irq, IRQ_NOREQUEST|IRQ_NOPROBE);
 
-   if (irq_remapped(cfg))
-   free_remapped_irq(irq);
+   free_remapped_irq(irq);
+
raw_spin_lock_irqsave(&vector_lock, flags);
__clear_irq_vector(irq, cfg);
raw_spin_unlock_irqrestore(&vector_lock, flags);
diff --git a/drivers/iommu/irq_remapping.c b/drivers/iommu/irq_remapping.c
index f0ac30a..165ac14 100644
--- a/drivers/iommu/irq_remapping.c
+++ b/drivers/iommu/irq_remapping.c
@@ -222,10 +222,13 @@ int set_remapped_irq_affinity(struct irq_data *data, 
const struct cpumask *mask,
 
 void free_remapped_irq(int irq)
 {
+   struct irq_cfg *cfg = irq_get_chip_data(irq);
+
if (!remap_ops || !remap_ops->free_irq)
return;
 
-   remap_ops->free_irq(irq);
+   if (irq_remapped(cfg))
+   remap_ops->free_irq(irq);
 }
 
 void compose_remapped_msi_msg(struct pci_dev *pdev,
-- 
1.7.9.5


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 15/19] x86, irq: Move irq_remapped() check into free_remapped_irq

2012-09-25 Thread Joerg Roedel
On Sun, Aug 26, 2012 at 08:27:55PM +0200, Sebastian Andrzej Siewior wrote:
> On Mon, Aug 20, 2012 at 03:56:01PM +0200, Joerg Roedel wrote:
> > --- a/arch/x86/kernel/apic/io_apic.c
> > +++ b/arch/x86/kernel/apic/io_apic.c
> > @@ -2981,8 +2981,8 @@ void destroy_irq(unsigned int irq)
> >  
> > irq_set_status_flags(irq, IRQ_NOREQUEST|IRQ_NOPROBE);
> >  
> > -   if (irq_remapped(cfg))
> > -   free_remapped_irq(irq);
> > +   free_remapped_irq(irq);
> > +
> > raw_spin_lock_irqsave(&vector_lock, flags);
> > __clear_irq_vector(irq, cfg);
> > raw_spin_unlock_irqrestore(&vector_lock, flags);
> > diff --git a/drivers/iommu/irq_remapping.c b/drivers/iommu/irq_remapping.c
> > index 3957fb2..f2affc7 100644
> > --- a/drivers/iommu/irq_remapping.c
> > +++ b/drivers/iommu/irq_remapping.c
> > @@ -229,10 +229,13 @@ int set_remapped_irq_affinity(struct irq_data *data, 
> > const struct cpumask *mask,
> >  
> >  void free_remapped_irq(int irq)
> >  {
> > +   struct irq_cfg *cfg = irq_get_chip_data(irq);
> > +
> > if (!remap_ops || !remap_ops->free_irq)
> > return;
> >  
> > -   remap_ops->free_irq(irq);
> > +   if (cfg && irq_remapped(cfg))
> 
> You shuffle code with the exception that you now check for cfg. Why?

Just to be sure it is not NULL, but looking again at the previous code
it is not necessary. I remove the check for cfg.


Joerg

-- 
AMD Operating System Research Center

Advanced Micro Devices GmbH Einsteinring 24 85609 Dornach
General Managers: Alberto Bozzo
Registration: Dornach, Landkr. Muenchen; Registerger. Muenchen, HRB Nr. 43632

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 15/19] x86, irq: Move irq_remapped() check into free_remapped_irq

2012-08-26 Thread Sebastian Andrzej Siewior
On Mon, Aug 20, 2012 at 03:56:01PM +0200, Joerg Roedel wrote:
> --- a/arch/x86/kernel/apic/io_apic.c
> +++ b/arch/x86/kernel/apic/io_apic.c
> @@ -2981,8 +2981,8 @@ void destroy_irq(unsigned int irq)
>  
>   irq_set_status_flags(irq, IRQ_NOREQUEST|IRQ_NOPROBE);
>  
> - if (irq_remapped(cfg))
> - free_remapped_irq(irq);
> + free_remapped_irq(irq);
> +
>   raw_spin_lock_irqsave(&vector_lock, flags);
>   __clear_irq_vector(irq, cfg);
>   raw_spin_unlock_irqrestore(&vector_lock, flags);
> diff --git a/drivers/iommu/irq_remapping.c b/drivers/iommu/irq_remapping.c
> index 3957fb2..f2affc7 100644
> --- a/drivers/iommu/irq_remapping.c
> +++ b/drivers/iommu/irq_remapping.c
> @@ -229,10 +229,13 @@ int set_remapped_irq_affinity(struct irq_data *data, 
> const struct cpumask *mask,
>  
>  void free_remapped_irq(int irq)
>  {
> + struct irq_cfg *cfg = irq_get_chip_data(irq);
> +
>   if (!remap_ops || !remap_ops->free_irq)
>   return;
>  
> - remap_ops->free_irq(irq);
> + if (cfg && irq_remapped(cfg))

You shuffle code with the exception that you now check for cfg. Why?

> + remap_ops->free_irq(irq);
>  }
>  
>  void compose_remapped_msi_msg(struct pci_dev *pdev,

Sebastian
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH 15/19] x86, irq: Move irq_remapped() check into free_remapped_irq

2012-08-20 Thread Joerg Roedel
The function is called unconditionally now in IO-APIC code
removing another irq_remapped() check from x86 core code.

Signed-off-by: Joerg Roedel 
---
 arch/x86/kernel/apic/io_apic.c |4 ++--
 drivers/iommu/irq_remapping.c  |5 -
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c
index e95325f..6022e4c 100644
--- a/arch/x86/kernel/apic/io_apic.c
+++ b/arch/x86/kernel/apic/io_apic.c
@@ -2981,8 +2981,8 @@ void destroy_irq(unsigned int irq)
 
irq_set_status_flags(irq, IRQ_NOREQUEST|IRQ_NOPROBE);
 
-   if (irq_remapped(cfg))
-   free_remapped_irq(irq);
+   free_remapped_irq(irq);
+
raw_spin_lock_irqsave(&vector_lock, flags);
__clear_irq_vector(irq, cfg);
raw_spin_unlock_irqrestore(&vector_lock, flags);
diff --git a/drivers/iommu/irq_remapping.c b/drivers/iommu/irq_remapping.c
index 3957fb2..f2affc7 100644
--- a/drivers/iommu/irq_remapping.c
+++ b/drivers/iommu/irq_remapping.c
@@ -229,10 +229,13 @@ int set_remapped_irq_affinity(struct irq_data *data, 
const struct cpumask *mask,
 
 void free_remapped_irq(int irq)
 {
+   struct irq_cfg *cfg = irq_get_chip_data(irq);
+
if (!remap_ops || !remap_ops->free_irq)
return;
 
-   remap_ops->free_irq(irq);
+   if (cfg && irq_remapped(cfg))
+   remap_ops->free_irq(irq);
 }
 
 void compose_remapped_msi_msg(struct pci_dev *pdev,
-- 
1.7.9.5


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH 15/19] x86, irq: Move irq_remapped() check into free_remapped_irq

2012-08-07 Thread Joerg Roedel
The function is called unconditionally now in IO-APIC code
removing another irq_remapped() check from x86 core code.

Signed-off-by: Joerg Roedel 
---
 arch/x86/kernel/apic/io_apic.c |4 ++--
 drivers/iommu/irq_remapping.c  |5 -
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c
index 32faf20..6a7c6c9 100644
--- a/arch/x86/kernel/apic/io_apic.c
+++ b/arch/x86/kernel/apic/io_apic.c
@@ -2981,8 +2981,8 @@ void destroy_irq(unsigned int irq)
 
irq_set_status_flags(irq, IRQ_NOREQUEST|IRQ_NOPROBE);
 
-   if (irq_remapped(cfg))
-   free_remapped_irq(irq);
+   free_remapped_irq(irq);
+
raw_spin_lock_irqsave(&vector_lock, flags);
__clear_irq_vector(irq, cfg);
raw_spin_unlock_irqrestore(&vector_lock, flags);
diff --git a/drivers/iommu/irq_remapping.c b/drivers/iommu/irq_remapping.c
index 3957fb2..f2affc7 100644
--- a/drivers/iommu/irq_remapping.c
+++ b/drivers/iommu/irq_remapping.c
@@ -229,10 +229,13 @@ int set_remapped_irq_affinity(struct irq_data *data, 
const struct cpumask *mask,
 
 void free_remapped_irq(int irq)
 {
+   struct irq_cfg *cfg = irq_get_chip_data(irq);
+
if (!remap_ops || !remap_ops->free_irq)
return;
 
-   remap_ops->free_irq(irq);
+   if (cfg && irq_remapped(cfg))
+   remap_ops->free_irq(irq);
 }
 
 void compose_remapped_msi_msg(struct pci_dev *pdev,
-- 
1.7.9.5


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/