diff mbox

[v6,4/4] piix_pci: load path clean up

Message ID 1bebb0f46f1bc7df5e0619169e54138c043ce96a.1301324539.git.yamahata@valinux.co.jp
State New
Headers show

Commit Message

Isaku Yamahata March 28, 2011, 3:05 p.m. UTC
The previous patch didn't change the behavior when load,
it resulted in ugly code. This patch cleans it up.

With this patch, pic irq lines are manipulated when loaded.
It is expected that it won't change the behaviour because
the interrupts are level: at the moment e.g. pci devices already
reassert interrupts on load.

Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
---
Changes v3 -> v4:
- newly introduced
- TODO: test more OSes, stress test with save/load, live-migration
---
 hw/piix_pci.c |   12 ++++--------
 1 files changed, 4 insertions(+), 8 deletions(-)

Comments

Michael S. Tsirkin March 28, 2011, 4:36 p.m. UTC | #1
On Tue, Mar 29, 2011 at 12:05:30AM +0900, Isaku Yamahata wrote:
> The previous patch didn't change the behavior when load,
> it resulted in ugly code. This patch cleans it up.
> 
> With this patch, pic irq lines are manipulated when loaded.
> It is expected that it won't change the behaviour because
> the interrupts are level: at the moment e.g. pci devices already
> reassert interrupts on load.
> 
> Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
> ---
> Changes v3 -> v4:
> - newly introduced
> - TODO: test more OSes, stress test with save/load, live-migration

The patch looks good to me.
You plan to do some of this testing?

> ---
>  hw/piix_pci.c |   12 ++++--------
>  1 files changed, 4 insertions(+), 8 deletions(-)
> 
> diff --git a/hw/piix_pci.c b/hw/piix_pci.c
> index 7ffb821..5f0d92f 100644
> --- a/hw/piix_pci.c
> +++ b/hw/piix_pci.c
> @@ -281,8 +281,7 @@ static void piix3_set_irq_pic(PIIX3State *piix3, int pic_irq)
>                       (pic_irq * PIIX_NUM_PIRQS))));
>  }
>  
> -static void piix3_set_irq_level(PIIX3State *piix3, int pirq, int level,
> -                                bool propagate)
> +static void piix3_set_irq_level(PIIX3State *piix3, int pirq, int level)
>  {
>      int pic_irq;
>      uint64_t mask;
> @@ -296,15 +295,13 @@ static void piix3_set_irq_level(PIIX3State *piix3, int pirq, int level,
>      piix3->pic_levels &= ~mask;
>      piix3->pic_levels |= mask * !!level;
>  
> -    if (propagate) {
> -        piix3_set_irq_pic(piix3, pic_irq);
> -    }
> +    piix3_set_irq_pic(piix3, pic_irq);
>  }
>  
>  static void piix3_set_irq(void *opaque, int pirq, int level)
>  {
>      PIIX3State *piix3 = opaque;
> -    piix3_set_irq_level(piix3, pirq, level, true);
> +    piix3_set_irq_level(piix3, pirq, level);
>  }
>  
>  /* irq routing is changed. so rebuild bitmap */
> @@ -315,8 +312,7 @@ static void piix3_update_irq_levels(PIIX3State *piix3)
>      piix3->pic_levels = 0;
>      for (pirq = 0; pirq < PIIX_NUM_PIRQS; pirq++) {
>          piix3_set_irq_level(piix3, pirq,
> -                            pci_bus_get_irq_level(piix3->dev.bus, pirq),
> -                            false);
> +                            pci_bus_get_irq_level(piix3->dev.bus, pirq));
>      }
>  }
>  
> -- 
> 1.7.1.1
diff mbox

Patch

diff --git a/hw/piix_pci.c b/hw/piix_pci.c
index 7ffb821..5f0d92f 100644
--- a/hw/piix_pci.c
+++ b/hw/piix_pci.c
@@ -281,8 +281,7 @@  static void piix3_set_irq_pic(PIIX3State *piix3, int pic_irq)
                      (pic_irq * PIIX_NUM_PIRQS))));
 }
 
-static void piix3_set_irq_level(PIIX3State *piix3, int pirq, int level,
-                                bool propagate)
+static void piix3_set_irq_level(PIIX3State *piix3, int pirq, int level)
 {
     int pic_irq;
     uint64_t mask;
@@ -296,15 +295,13 @@  static void piix3_set_irq_level(PIIX3State *piix3, int pirq, int level,
     piix3->pic_levels &= ~mask;
     piix3->pic_levels |= mask * !!level;
 
-    if (propagate) {
-        piix3_set_irq_pic(piix3, pic_irq);
-    }
+    piix3_set_irq_pic(piix3, pic_irq);
 }
 
 static void piix3_set_irq(void *opaque, int pirq, int level)
 {
     PIIX3State *piix3 = opaque;
-    piix3_set_irq_level(piix3, pirq, level, true);
+    piix3_set_irq_level(piix3, pirq, level);
 }
 
 /* irq routing is changed. so rebuild bitmap */
@@ -315,8 +312,7 @@  static void piix3_update_irq_levels(PIIX3State *piix3)
     piix3->pic_levels = 0;
     for (pirq = 0; pirq < PIIX_NUM_PIRQS; pirq++) {
         piix3_set_irq_level(piix3, pirq,
-                            pci_bus_get_irq_level(piix3->dev.bus, pirq),
-                            false);
+                            pci_bus_get_irq_level(piix3->dev.bus, pirq));
     }
 }