[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