From patchwork Mon Mar 5 03:08:59 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jason Wang X-Patchwork-Id: 144592 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id E08A2B6EEE for ; Mon, 5 Mar 2012 15:16:44 +1100 (EST) Received: from localhost ([::1]:47208 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S4OqP-0004DE-8y for incoming@patchwork.ozlabs.org; Sun, 04 Mar 2012 22:44:17 -0500 Received: from eggs.gnu.org ([208.118.235.92]:45627) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S4OIY-0007hw-SN for qemu-devel@nongnu.org; Sun, 04 Mar 2012 22:09:19 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1S4OIV-0004BL-V0 for qemu-devel@nongnu.org; Sun, 04 Mar 2012 22:09:18 -0500 Received: from mx1.redhat.com ([209.132.183.28]:24671) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S4OIV-0004As-Mo for qemu-devel@nongnu.org; Sun, 04 Mar 2012 22:09:15 -0500 Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id q25393d4017482 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Sun, 4 Mar 2012 22:09:03 -0500 Received: from [127.0.1.1] (dhcp-65-172.nay.redhat.com [10.66.65.172]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id q253902q010714; Sun, 4 Mar 2012 22:09:01 -0500 To: aliguori@us.ibm.com, stefanha@linux.vnet.ibm.com, mst@redhat.com, qemu-devel@nongnu.org, benjamin.poirier@gmail.com, aurelien@aurel32.net From: Jason Wang Date: Mon, 05 Mar 2012 11:08:59 +0800 Message-ID: <20120305030859.8515.349.stgit@jason-ThinkPad-T400> In-Reply-To: <20120305030824.8515.53602.stgit@jason-ThinkPad-T400> References: <20120305030824.8515.53602.stgit@jason-ThinkPad-T400> User-Agent: StGit/0.15 MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.67 on 10.5.11.12 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 209.132.183.28 X-Mailman-Approved-At: Sun, 04 Mar 2012 22:43:42 -0500 Subject: [Qemu-devel] [PATCH 5/6] rtl8139: correctly check the opmode X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org According to the spec, only when opmode is "Config. Register Write Enable" could driver write to CONFIG0,1,3,4 and bits 13,12,8 of BMCR. Currently, we allow modifying to those registers also when 8139 is in "Auto-load" mode and "93C46 (93C56) Programming" mode. This patch fixes this. Signed-off-by: Jason Wang --- hw/rtl8139.c | 8 +++++--- 1 files changed, 5 insertions(+), 3 deletions(-) diff --git a/hw/rtl8139.c b/hw/rtl8139.c index 509a53e..2e3da0b 100644 --- a/hw/rtl8139.c +++ b/hw/rtl8139.c @@ -332,8 +332,10 @@ enum CSCRBits { }; enum Cfg9346Bits { - Cfg9346_Lock = 0x00, - Cfg9346_Unlock = 0xC0, + Cfg9346_Normal = 0x00, + Cfg9346_Autoload = 0x40, + Cfg9346_Programming = 0x80, + Cfg9346_ConfigWrite = 0xC0, }; typedef enum { @@ -1451,7 +1453,7 @@ static uint32_t rtl8139_IntrMitigate_read(RTL8139State *s) static int rtl8139_config_writable(RTL8139State *s) { - if (s->Cfg9346 & Cfg9346_Unlock) + if ((s->Cfg9346 & Chip9346_op_mask) == Cfg9346_ConfigWrite) { return 1; }