From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54430) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Y1YLQ-0007ye-MI for qemu-devel@nongnu.org; Thu, 18 Dec 2014 05:30:14 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Y1YLK-0000RQ-I2 for qemu-devel@nongnu.org; Thu, 18 Dec 2014 05:30:08 -0500 Received: from mx1.redhat.com ([209.132.183.28]:51093) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Y1YLK-0000Og-BW for qemu-devel@nongnu.org; Thu, 18 Dec 2014 05:30:02 -0500 Date: Thu, 18 Dec 2014 18:30:19 +0800 From: Amos Kong Message-ID: <20141218103019.GA12275@air.redhat.com> References: <1418894539-13990-1-git-send-email-akong@redhat.com> <1418894539-13990-3-git-send-email-akong@redhat.com> <1418896169.6411.0@smtp.corp.redhat.com> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="qDbXVdCdHGoSgWSk" Content-Disposition: inline In-Reply-To: <1418896169.6411.0@smtp.corp.redhat.com> Subject: Re: [Qemu-devel] [PATCH 2/2] e1000: unconditionally enable bus mastering List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Jason Wang Cc: somlo@cmu.edu, mst@redhat.com, qemu-devel@nongnu.org, stefanha@redhat.com, marcel.a@redhat.com --qDbXVdCdHGoSgWSk Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Thu, Dec 18, 2014 at 09:57:29AM +0008, Jason Wang wrote: >=20 >=20 > On Thu, Dec 18, 2014 at 5:22 PM, Amos Kong wrote: > >After enabled network debug of e1000 in Win2012-64r2 guest, > >Bus mastering of e1000 can't be enabled by e1000 driver. It > >caused guest can't get IP address. > > > > # bcdedit /debug on > > # bcdedit /dbgsettings net hostip:192.168.122.100 port:50000 > > (We can use non-existed IP here, it's just used to pass the > > setup, not really use it) > > > >If we disable debug function, e1000 driver can enable bus > >mastering bit successfully, guest network is fine. > > > >This patch changed e1000 backend to enalbe bus mastering > >unconditionally as a workaround. > > > >Signed-off-by: Amos Kong > >--- > > hw/net/e1000.c | 11 +++++++++-- > > 1 file changed, 9 insertions(+), 2 deletions(-) > > > >diff --git a/hw/net/e1000.c b/hw/net/e1000.c > >index ec9224b..82829ae 100644 > >--- a/hw/net/e1000.c > >+++ b/hw/net/e1000.c > >@@ -1544,8 +1544,15 @@ static void e1000_write_config(PCIDevice *pci_dev, > >uint32_t address, > > pci_default_write_config(pci_dev, address, val, len); > >- if (range_covers_byte(address, len, PCI_COMMAND) && > >- (pci_dev->config[PCI_COMMAND] & PCI_COMMAND_MASTER)) { > >+ if (range_covers_byte(address, len, PCI_COMMAND)) { > >+ /* > >+ * Some guest (eg: Win2012-64r2) doesn't enable bus mastering > >+ * correctly, it caused guest network down. So we unconditional= ly > >+ * enable PCI bus mastering and BM memory region for e1000 as > >+ * a workaround. > >+ */ > >+ pci_dev->config[PCI_COMMAND] |=3D PCI_COMMAND_MASTER; > >+ memory_region_set_enabled(&pci_dev->bus_master_enable_region, > >true); >=20 > So BM is still set even if guest want to clear it? BM will be cleared many times in boot stage, enabling it once doesn't work. Curently we honestly clear the bit, then BM isn't enabled. But it's might be too aggressive/crazy to enable BM forever. > > > > qemu_flush_queued_packets(qemu_get_queue(s->nic)); > > start_xmit(s); > > } --=20 Amos. --qDbXVdCdHGoSgWSk Content-Type: application/pgp-signature; name="signature.asc" Content-Description: Digital signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAEBAgAGBQJUkqy7AAoJELxSv6I5vP9jvU0P/jdLHLv/nRrOAt3/JFRUTg6Q +sd4FSdbC6qZyKNEz+OB2DnGcPWi4dWIaJxIQjH24fHZshxM74XTFvQwQzkl32+r 3ETYerQqjyZk9eVIWm9RuZkgSC4zgDSMkqIMFkGd98nPkvU6AC5YSrVVmVrUAjzu UxW1IQD4oloTxOOFaEcfDNgJW6BLC7BRlCNfdyrgJ2oukii+1SspUtS2e2J2N+3C r5EBTGC4+k8gXx31KkNaFn+/h3T6qPb1B11J1cgfif/cdqLI9V13jSB4CJYPllwS PVObN0KDSdX/E4NB2wzIZDTh2O0qE0oqkt4ggEtCizzeNl91gsB0oW793WDjRJjd QUyX0pkUgC5t0RPP3X6DTf6zqaBhOriVwVhCJu6iapPYWV7WgmufJu9cv+nHx2/z ODKCdTspZ4+doJP7znJSZSF0gPBxSCaHiJUuEjPIodqM6FchTREqQQKNiBlpD9z8 H4OcjpJvM+SK+ojhrQ35tAYAs2jUmTnucZSaCX7PluU9eom86Ehk9yuA2F2lU5LI Pfx+Lw5useRvddbFeV7hyKyyRZHzhM94y54VoN5+aJ4meRM89+h25c+k7l9GNPog ipMDKqCYDVXWyIykvaAH8y7HN4/0tcRipQAbreTy2mqpstwoL0sJop5veY+L5XMT Rp180bvZoDayRe1QLQoy =vJh8 -----END PGP SIGNATURE----- --qDbXVdCdHGoSgWSk--