Skip to contentSkip to conversation

e1000: document ICS read behaviour

PATCH Applied Michael S. Tsirkin 2 participants 4 messages Jan 9, 2013 – Jan 10, 2013

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 e1000: document ICS read behaviour

Add code comment to clarify the reason we set ICS with ICR:
the reason was previously undocumented and git
log (commit b1332393cdd7d023de8f1f8aa136ee7866a18968) confused rather than clarified the comments. Digging in the mailing list archives gives the real reason
https://lists.gnu.org/archive/html/qemu-devel/2009-06/msg00401.html

Add code comment with an explanation supplied by Bill Paul.

---
 hw/e1000.c | 11 +++++++++++
 1 file changed, 11 insertions(+)
hw/e1000.c +11 -0
index 92fb00a..73e360e 100644
@@ -230,7 +230,18 @@ set_interrupt_cause(E1000State *s, int index, uint32_t val)
         val |= E1000_ICR_INT_ASSERTED;
     }
     s->mac_reg[ICR] = val;
+
+    /*
+     * Make sure ICR and ICS registers have the same value.
+     * The spec says that the ICS register is write-only.  However in practice,
+     * on real hardware ICS is readable, and for reads it has the same value as
+     * ICR (except that ICS does not have the clear on read behaviour of ICR).
+     *
+     * The VxWorks PRO/1000 driver relies on this behaviour, so we have to
+     * emulate it.
+     */
     s->mac_reg[ICS] = val;
+
     qemu_set_irq(s->dev.irq[0], (s->mac_reg[IMS] & s->mac_reg[ICR]) != 0);
 }
 
Signature · 1 line
MST
#1 lore raw
Quoted 7 lines · Michael S. Tsirkin

Add code comment to clarify the reason we set ICS with ICR:
the reason was previously undocumented and git
log (commit b1332393cdd7d023de8f1f8aa136ee7866a18968) confused rather than clarified the comments. Digging in the mailing list archives gives the real reason
https://lists.gnu.org/archive/html/qemu-devel/2009-06/msg00401.html

Quoted 6 lines

Add code comment with an explanation supplied by Bill Paul.

---
 hw/e1000.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

Thanks, applied to the net tree:
https://github.com/stefanha/qemu/commits/net

Stefan

#2 lore raw
Quoted 15 lines · Stefan Hajnoczi
Quoted 7 lines · Michael S. Tsirkin

Add code comment to clarify the reason we set ICS with ICR:
the reason was previously undocumented and git
log (commit b1332393cdd7d023de8f1f8aa136ee7866a18968) confused rather than clarified the comments. Digging in the mailing list archives gives the real reason
https://lists.gnu.org/archive/html/qemu-devel/2009-06/msg00401.html

Quoted 6 lines

Add code comment with an explanation supplied by Bill Paul.

---
 hw/e1000.c | 11 +++++++++++
 1 file changed, 11 insertions(+)
Quoted 4 lines

Thanks, applied to the net tree:
https://github.com/stefanha/qemu/commits/net

Stefan

Actually I'm going to send v2 with a minor tweak.

#3 lore raw
Quoted 16 lines · Michael S. Tsirkin
Quoted 15 lines · Stefan Hajnoczi
Quoted 13 lines · Michael S. Tsirkin

Add code comment to clarify the reason we set ICS with ICR:
the reason was previously undocumented and git
log (commit b1332393cdd7d023de8f1f8aa136ee7866a18968) confused rather than clarified the comments. Digging in the mailing list archives gives the real reason
https://lists.gnu.org/archive/html/qemu-devel/2009-06/msg00401.html

Add code comment with an explanation supplied by Bill Paul.

---
 hw/e1000.c | 11 +++++++++++
 1 file changed, 11 insertions(+)
Quoted 6 lines
Quoted 4 lines

Thanks, applied to the net tree:
https://github.com/stefanha/qemu/commits/net

Stefan

Actually I'm going to send v2 with a minor tweak.

No problem. I will wait with the next net pull request until v2 has been merged.

Stefan