From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:56337) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1R8XEZ-0002cn-6P for qemu-devel@nongnu.org; Tue, 27 Sep 2011 08:58:04 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1R8XET-0000O5-5m for qemu-devel@nongnu.org; Tue, 27 Sep 2011 08:58:03 -0400 Received: from mx1.redhat.com ([209.132.183.28]:47798) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1R8XES-0000Nz-Uf for qemu-devel@nongnu.org; Tue, 27 Sep 2011 08:57:57 -0400 Date: Tue, 27 Sep 2011 15:58:52 +0300 From: "Michael S. Tsirkin" Message-ID: References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: Subject: [Qemu-devel] [PATCH 2/2] e1000: CTRL.RST emulation List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org, Andy Gospodarek , Dean Nelson , Jesse Brandeburg , Jeff Kirsher Cc: peter.maydell@linaro.org, Anthony Liguori , "Michael S. Tsirkin" , Alex Williamson , Anthony PERARD , Kevin Wolf , Aurelien Jarno e1000 spec says CTRL.RST write should have the same effect as bus reset, except that is preserves PCI Config. Reset device registers and interrupts. Fix suggested by Andy Gospodarek Similar fix proposed by Anthony PERARD Signed-off-by: Michael S. Tsirkin --- hw/e1000.c | 9 +++++++-- 1 files changed, 7 insertions(+), 2 deletions(-) diff --git a/hw/e1000.c b/hw/e1000.c index 87a1104..b51e089 100644 --- a/hw/e1000.c +++ b/hw/e1000.c @@ -241,8 +241,13 @@ static void e1000_reset(void *opaque) static void set_ctrl(E1000State *s, int index, uint32_t val) { - /* RST is self clearing */ - s->mac_reg[CTRL] = val & ~E1000_CTRL_RST; + if (val & E1000_CTRL_RST) { + e1000_reset(s); + qemu_set_irq(s->dev.irq[0], 0); + return; + } + + s->mac_reg[CTRL] = val; } static void -- 1.7.5.53.gc233e