qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 2/2] analyze-migration.py: replace numpy with python 3.2


From: Eduardo Habkost
Subject: Re: [PATCH 2/2] analyze-migration.py: replace numpy with python 3.2
Date: Mon, 9 Dec 2019 23:58:57 -0300

On Fri, Dec 06, 2019 at 09:27:23AM -0500, Cleber Rosa wrote:
> On Wed, Nov 27, 2019 at 02:10:38PM +0400, Marc-André Lureau wrote:
> > Use int.from_bytes() from python 3.2 instead.
> > 
> > Signed-off-by: Marc-André Lureau <address@hidden>
> > ---
> >  scripts/analyze-migration.py | 35 +++++++++++++++++++----------------
> >  1 file changed, 19 insertions(+), 16 deletions(-)
> > 
> > diff --git a/scripts/analyze-migration.py b/scripts/analyze-migration.py
> > index 2b835d9b70..96a31d3974 100755
> > --- a/scripts/analyze-migration.py
> > +++ b/scripts/analyze-migration.py
> > @@ -1,4 +1,4 @@
> > -#!/usr/bin/env python
> > +#!/usr/bin/env python3
[...]
> 
> Marc-André, I couldn't yet pinpoint the reason yet, but this patch
> changes the parsing of bool fields.  This is a diff between the output
> pre/post this patch on the same images:
> 
> $ diff -u out_x8664_pre out_x8664_post 
> --- out_x8664_pre       2019-12-06 09:14:16.128943264 -0500
> +++ out_x8664_post      2019-12-06 09:23:35.861378600 -0500
> @@ -3039,7 +3039,7 @@
>              "mac_reg[RADV]": "0x00000000",
>              "mac_reg[TADV]": "0x00000000",
>              "mac_reg[ITR]": "0x00000000",
> -            "mit_irq_level": true
> +            "mit_irq_level": false
>          },
>          "e1000/full_mac_state": {
>              "mac_reg": [
> @@ -36010,10 +36010,10 @@
>              ],
>              "smb_auxctl": "0x02",
>              "smb_blkdata": "0x00",
> -            "i2c_enable": true,
> +            "i2c_enable": false,
>              "op_done": true,
> -            "in_i2c_block_read": true,
> -            "start_transaction_on_status_read": true
> +            "in_i2c_block_read": false,
> +            "start_transaction_on_status_read": false
>          },
>          "ar.tmr.timer": "ff ff ff ff ff ff ff ff",
>          "ar.tmr.overflow_time": "0x0000000000000000",
> 
> This true/false flipping is consistent across various images (tried on
> images generated on a few other targets).

It looks like moving to python3 accidentally fixes a bug.

This is VMSDFieldBool.read:

    def read(self):
        super(VMSDFieldBool, self).read()
        if self.data[0] == 0:
            self.data = False
        else:
            self.data = True
        return self.data

On python2, MigrationFile.readvar() returned a string, so the
(self.data[0] == 0) check was never true.  This means all boolean
fields were always initialized to True.

On python3, MigrationFile.readvar() returns a bytearray, so the
(self.data[0] == 0) check now works as expected.

-- 
Eduardo




reply via email to

[Prev in Thread] Current Thread [Next in Thread]