On 05/14/2012 02:20 PM, Michael S. Tsirkin wrote:
On Mon, May 14, 2012 at 01:31:22PM +0800, Jason Wang wrote:
> On 05/10/2012 07:05 PM, Michael S. Tsirkin wrote:
> >On Thu, May 10, 2012 at 05:31:56PM +0800, Jason Wang wrote:
> >>On 05/10/2012 04:54 PM, Michael S. Tsirkin wrote:
> >>>On Thu, May 10, 2012 at 04:37:22PM +0800, Jason Wang wrote:
> >>>>This reverts commit ff71f2e8cacefae99179993204172bc65e4303df. This is
because
> >>>>the linux 8139cp driver would leave the card in "Config Register Write
Enable"
> >>>>mode after the eeprom were read or write ( which is unexpected in the
spec
> >>>>).
> >>>Could you show where this happens please?
> >>Hi Michael:
> >>
> >>According to the spec:
> >>"""
> >>Normal(0x00): RTL8139C(L)+ network/host communication mode.
> >>...
> >>Config. Register Write Enable(0x11): Before writing to the CONFIG0,
> >>1, 3, 4 registers, and bits 13, 12, 8 of BMCR (offset 62h-63h), the
> >>RTL8139C(L)+ must be placed in this mode. This will protect the
> >>RTL8139C(L)+ configuration from accidental change.
> >>"""
> >>So If I am reading it correctly, guest should place the card in
> >>"Normal mode" during transmission and reception. But linux driver
> >>would reset the mode to 11 after each read or write to the eeprom,
> >>see eeprom_cmd_end() in 8139cp.c.
> >Which version? The one I see upstream just clears chip select ...
>
> It use writeb(), so in the meantime it also set the high two bits of 9346.
OK, so that's the bug, right?
And it's later cleared during normal init, but reading
eeprom will set it?
Right, that's exactly what I mean.