From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49448) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VgdC7-0005R6-Fs for qemu-devel@nongnu.org; Wed, 13 Nov 2013 11:21:37 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VgdBx-0002Ub-Mf for qemu-devel@nongnu.org; Wed, 13 Nov 2013 11:21:31 -0500 Received: from mx1.redhat.com ([209.132.183.28]:27696) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VgdBx-0002Ts-Fa for qemu-devel@nongnu.org; Wed, 13 Nov 2013 11:21:21 -0500 Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id rADGLKub028665 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Wed, 13 Nov 2013 11:21:20 -0500 Message-ID: <5283A6FE.60205@redhat.com> Date: Wed, 13 Nov 2013 11:21:18 -0500 From: Vlad Yasevich MIME-Version: 1.0 References: <1383650238-16015-1-git-send-email-akong@redhat.com> <1383939747-10158-1-git-send-email-vyasevic@redhat.com> <20131110121151.GA5908@redhat.com> In-Reply-To: <20131110121151.GA5908@redhat.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH] e1000/rtl8139: update HMP NIC when every bit is written Reply-To: vyasevic@redhat.com List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: "Michael S. Tsirkin" Cc: jasowang@redhat.com, akong@redhat.com, qemu-devel@nongnu.org, stefanha@redhat.com On 11/10/2013 07:11 AM, Michael S. Tsirkin wrote: > On Fri, Nov 08, 2013 at 02:42:27PM -0500, Vlad Yasevich wrote: >> What about this approach? This only updates the monitory when all the >> bits have been written to. >> >> -vlad > > > Thanks! > Some comments below. > >> -- >8 -- >> Subject: [PATCH] e1000/rtl8139: update HMP NIC when every bit is written >> >> We currently just update the HMP NIC info when the last bit of macaddr >> is written. This assumes that guest driver will write all the macaddr >> from bit 0 to bit 5 when it changes the macaddr, this is the current >> behavior of linux driver (e1000/rtl8139cp), but we can't do this >> assumption. > > I would rather say "it seems better not to make this assumption". > This does look somewhat safer than what Amos proposed. > >> >> The macaddr that is used for rx-filter will be updated when every bit >> is changed. This patch updates the e1000/rtl8139 nic to update HMP NIC >> info when every bit has been changed. It will be same as virtio-net. >> >> Signed-off-by: Vlad Yasevich >> --- >> hw/net/e1000.c | 17 ++++++++++++++++- >> hw/net/rtl8139.c | 14 +++++++++----- >> 2 files changed, 25 insertions(+), 6 deletions(-) >> >> diff --git a/hw/net/e1000.c b/hw/net/e1000.c >> index 8387443..a5967ed 100644 >> --- a/hw/net/e1000.c >> +++ b/hw/net/e1000.c >> @@ -149,6 +149,10 @@ typedef struct E1000State_st { >> #define E1000_FLAG_AUTONEG (1 << E1000_FLAG_AUTONEG_BIT) >> #define E1000_FLAG_MIT (1 << E1000_FLAG_MIT_BIT) >> uint32_t compat_flags; >> + uint32_t mac_changed; > > Hmm why uint32_t? uint8_t is enough here isn't? > > This new state has to be migrated then, and > we need to fallback to old behaviour if migrating to/from > an old version (see compat_flags for one way to > detect this compatibility mode). > Hi Michael I started looking at migrating this thing and I now starting to question the whole approach. The only reason to migrate this is if we can migrate between writes to the mac address registers. We can fairly easily solve the issue of migrating from net to old versions. The more interesting question is migrating from old to new versions. If someone is migrating from an older version (without this feature) to a newer version and doing so between writes, the bitmap state will have no idea that a partial write has already happened. The completing write will just set one of the bits and notifications that we are looking for do not happen. -vlad