From: "Reimar Döffinger" <Reimar.Doeffinger@gmx.de>
To: qemu-devel@nongnu.org
Subject: [Qemu-devel] [PATCH 2/5] Hack to make sure that drivers like AppleIntel8255x will not meddle with the RU/CU state when the ACK the interrupt with a 16 bit write.
Date: Tue, 11 Aug 2009 23:14:56 +0200 [thread overview]
Message-ID: <20090811211456.GC10500@1und1.de> (raw)
In-Reply-To: <4A81D3F1.1040300@codemonkey.ws>
This patch ensures that a driver will not accidentally/incorrectly change the
RU/CU state with a write.
This is incomplete and a bit ugly, but good enough for these drivers.
The reason this is an issue is that the drivers ACK interrupts with a 16 bit
write to the status word, with the lower bits having a value of 0.
Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
---
hw/eepro100.c | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/hw/eepro100.c b/hw/eepro100.c
index bf5d920..f619d36 100644
--- a/hw/eepro100.c
+++ b/hw/eepro100.c
@@ -1249,7 +1249,11 @@ 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)) {
+ ru_state_t rtmp = get_ru_state(s);
+ cu_state_t ctmp = get_cu_state(s);
memcpy(&s->mem[addr], &val, sizeof(val));
+ set_cu_state(s, ctmp);
+ set_ru_state(s, rtmp);
}
logout("addr=%s val=0x%04x\n", regname(addr), val);
--
1.6.4
next prev parent reply other threads:[~2009-08-11 21:15 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-08-09 21:14 [Qemu-devel] [PATCH] Intel 8255x/eepro100 compatibility patches Reimar Döffinger
2009-08-10 4:36 ` Stefan Weil
2009-08-10 6:42 ` Reimar Döffinger
2009-08-17 7:47 ` Reimar Döffinger
2009-08-11 18:27 ` Reimar Döffinger
2009-08-11 20:26 ` Anthony Liguori
2009-08-11 21:13 ` [Qemu-devel] " Reimar Döffinger
2009-08-15 12:32 ` Reimar Döffinger
2009-08-11 21:14 ` [Qemu-devel] [PATCH 1/5] Setting the MDI SCBAck flag when interrupts for MDI are disabled is wrong, even if it does not seem to cause any real issue with known drivers Reimar Döffinger
2009-08-11 21:14 ` Reimar Döffinger [this message]
2009-08-11 21:15 ` [Qemu-devel] [PATCH 3/5] Add support for receiving via receive buffers. While the Intel documentation claims this is unsupported, the OS X drivers use it, causing an assertion failure since rx buffer size is 0 Reimar Döffinger
2009-08-11 23:04 ` malc
2009-08-12 0:35 ` Reimar Döffinger
2009-08-12 17:34 ` malc
2009-08-12 18:24 ` Anthony Liguori
2009-08-13 13:25 ` Reimar Döffinger
2009-08-11 21:15 ` [Qemu-devel] [PATCH 4/5] Short frames do not exist, so remove code to handle them. Also expand packets that are smaller than the shor frame limit, otherwise the OS X network stack seems to discard them Reimar Döffinger
2009-08-11 21:15 ` [Qemu-devel] [PATCH 5/5] Set the RU state to ru_no_resources instead of asserting when we used up the last receive buffer. This should not usually happen with good drivers, but it can happen with the OS X drivers at least Reimar Döffinger
2009-08-12 8:53 ` [Qemu-devel] [PATCH 6/5] Implement the trivial diagnose CU and RU abort commands. These are necessary to make the device work with OpenSolaris 0609 (111b) Reimar Döffinger
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=20090811211456.GC10500@1und1.de \
--to=reimar.doeffinger@gmx.de \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.