qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Stefan Weil <weil@mail.berlios.de>
To: QEMU Developers <qemu-devel@nongnu.org>
Cc: "Michael S. Tsirkin" <mst@redhat.com>
Subject: [Qemu-devel] [PATCH 1/9] eepro100: Don't allow writing SCBStatus
Date: Tue,  6 Apr 2010 13:44:01 +0200	[thread overview]
Message-ID: <1270554249-24861-2-git-send-email-weil@mail.berlios.de> (raw)
In-Reply-To: <1270554249-24861-1-git-send-email-weil@mail.berlios.de>

SCBStatus is readonly, but most drivers which were derived
from the old Linux eepro100.c do a word write to this address
when they want to acknowledge interrupts.

So we have to mask these writes here.

The patch also removes old unused code for status read / write.

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
---
 hw/eepro100.c |   49 +++++--------------------------------------------
 1 files changed, 5 insertions(+), 44 deletions(-)

diff --git a/hw/eepro100.c b/hw/eepro100.c
index 7db6fb5..0415132 100644
--- a/hw/eepro100.c
+++ b/hw/eepro100.c
@@ -237,10 +237,6 @@ typedef struct {
     /* Statistical counters. Also used for wake-up packet (i82559). */
     eepro100_stats_t statistics;
 
-#if 0
-    uint16_t status;
-#endif
-
     /* Configuration bytes. */
     uint8_t configuration[22];
 
@@ -693,21 +689,6 @@ static char *regname(uint32_t addr)
 }
 #endif                          /* DEBUG_EEPRO100 */
 
-#if 0
-static uint16_t eepro100_read_status(EEPRO100State * s)
-{
-    uint16_t val = s->status;
-    TRACE(OTHER, logout("val=0x%04x\n", val));
-    return val;
-}
-
-static void eepro100_write_status(EEPRO100State * s, uint16_t val)
-{
-    TRACE(OTHER, logout("val=0x%04x\n", val));
-    s->status = val;
-}
-#endif
-
 /*****************************************************************************
  *
  * Command emulation.
@@ -1364,15 +1345,7 @@ static uint8_t eepro100_read1(EEPRO100State * s, uint32_t addr)
 
     switch (addr) {
     case SCBStatus:
-#if 0
-        val = eepro100_read_status(s);
-#endif
-        TRACE(OTHER, logout("addr=%s val=0x%02x\n", regname(addr), val));
-        break;
     case SCBAck:
-#if 0
-        val = eepro100_read_status(s);
-#endif
         TRACE(OTHER, logout("addr=%s val=0x%02x\n", regname(addr), val));
         break;
     case SCBCmd:
@@ -1415,9 +1388,6 @@ static uint16_t eepro100_read2(EEPRO100State * s, uint32_t addr)
 
     switch (addr) {
     case SCBStatus:
-#if 0
-        val = eepro100_read_status(s);
-#endif
     case SCBCmd:
         TRACE(OTHER, logout("addr=%s val=0x%04x\n", regname(addr), val));
         break;
@@ -1441,9 +1411,6 @@ static uint32_t eepro100_read4(EEPRO100State * s, uint32_t addr)
 
     switch (addr) {
     case SCBStatus:
-#if 0
-        val = eepro100_read_status(s);
-#endif
         TRACE(OTHER, logout("addr=%s val=0x%08x\n", regname(addr), val));
         break;
     case SCBPointer:
@@ -1468,7 +1435,8 @@ static uint32_t eepro100_read4(EEPRO100State * s, uint32_t addr)
 
 static void eepro100_write1(EEPRO100State * s, uint32_t addr, uint8_t val)
 {
-    if (addr <= sizeof(s->mem) - sizeof(val)) {
+    /* SCBStatus is readonly. */
+    if (addr > SCBStatus && addr <= sizeof(s->mem) - sizeof(val)) {
         memcpy(&s->mem[addr], &val, sizeof(val));
     }
 
@@ -1476,9 +1444,6 @@ static void eepro100_write1(EEPRO100State * s, uint32_t addr, uint8_t val)
 
     switch (addr) {
     case SCBStatus:
-#if 0
-        eepro100_write_status(s, val);
-#endif
         break;
     case SCBAck:
         eepro100_acknowledge(s);
@@ -1510,7 +1475,8 @@ static void eepro100_write1(EEPRO100State * s, uint32_t addr, uint8_t val)
 
 static void eepro100_write2(EEPRO100State * s, uint32_t addr, uint16_t val)
 {
-    if (addr <= sizeof(s->mem) - sizeof(val)) {
+    /* SCBStatus is readonly. */
+    if (addr > SCBStatus && addr <= sizeof(s->mem) - sizeof(val)) {
         memcpy(&s->mem[addr], &val, sizeof(val));
     }
 
@@ -1518,9 +1484,7 @@ static void eepro100_write2(EEPRO100State * s, uint32_t addr, uint16_t val)
 
     switch (addr) {
     case SCBStatus:
-#if 0
-        eepro100_write_status(s, val);
-#endif
+        s->mem[SCBAck] = (val >> 8);
         eepro100_acknowledge(s);
         break;
     case SCBCmd:
@@ -1908,9 +1872,6 @@ static const VMStateDescription vmstate_eepro100 = {
         VMSTATE_UINT32(statistics.fc_rcv_unsupported, EEPRO100State),
         VMSTATE_UINT16(statistics.xmt_tco_frames, EEPRO100State),
         VMSTATE_UINT16(statistics.rcv_tco_frames, EEPRO100State),
-#if 0
-        VMSTATE_UINT16(status, EEPRO100State),
-#endif
         /* Configuration bytes. */
         VMSTATE_BUFFER(configuration, EEPRO100State),
         VMSTATE_END_OF_LIST()
-- 
1.7.0

  reply	other threads:[~2010-04-06 11:44 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-04-06 11:44 [Qemu-devel] eepro100: New patches Stefan Weil
2010-04-06 11:44 ` Stefan Weil [this message]
2010-04-06 11:44 ` [Qemu-devel] [PATCH 2/9] eepro100: Simplify status handling Stefan Weil
2010-04-06 12:18   ` [Qemu-devel] " Michael S. Tsirkin
2010-04-06 14:29     ` Stefan Weil
2010-04-06 14:34       ` Michael S. Tsirkin
2010-04-06 11:44 ` [Qemu-devel] [PATCH 3/9] eepro100: Simplified device instantiation Stefan Weil
2010-04-06 11:44 ` [Qemu-devel] [PATCH 4/9] eepro100: Add new device variant i82801 Stefan Weil
2010-04-06 11:44 ` [Qemu-devel] [PATCH 5/9] eepro100: Set configuration bit for standard TCB Stefan Weil
2010-04-06 11:44 ` [Qemu-devel] [PATCH 6/9] eepro100: Support compilation without EEPROM Stefan Weil
2010-04-06 12:10   ` [Qemu-devel] " Michael S. Tsirkin
2010-04-06 14:26     ` Stefan Weil
2010-04-06 15:44   ` [Qemu-devel] " Richard Henderson
2010-04-06 16:01     ` Stefan Weil
2010-04-06 16:35       ` Richard Henderson
2010-04-07  1:00   ` Paul Brook
2010-04-07  7:02     ` Stefan Weil
2010-04-07  7:29       ` Michael S. Tsirkin
2010-04-06 11:44 ` [Qemu-devel] [PATCH 7/9] eepro100: Set power management capability using pci_reserve_capability Stefan Weil
2010-04-06 12:09   ` [Qemu-devel] " Michael S. Tsirkin
2010-04-06 11:44 ` [Qemu-devel] [PATCH 8/9] eepro100: Fix mapping of flash memory Stefan Weil
2010-04-06 11:57   ` [Qemu-devel] " Michael S. Tsirkin
2010-04-06 14:23     ` Stefan Weil
2010-04-06 14:30       ` Michael S. Tsirkin
2010-04-06 11:44 ` [Qemu-devel] [PATCH 9/9] eepro100: Fix PCI interrupt pin configuration regression Stefan Weil
2010-04-06 11:55   ` [Qemu-devel] " Michael S. Tsirkin
2010-04-06 12:40 ` [Qemu-devel] Re: eepro100: New patches Michael S. Tsirkin
2010-04-06 16:09   ` Stefan Weil
2010-04-07  8:10     ` Michael S. Tsirkin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1270554249-24861-2-git-send-email-weil@mail.berlios.de \
    --to=weil@mail.berlios.de \
    --cc=mst@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).