On Thu, Sep 13, 2018 at 05:48:59PM +0200, Cédric Le Goater wrote: > On 09/13/2018 03:33 PM, Guenter Roeck wrote: [ ... ] > >>> /* > >>> * The state machine needs some refinement. It is only used to track > >>> * invalid STOP commands for the moment. > >>> @@ -188,7 +215,7 @@ static void aspeed_i2c_bus_handle_cmd(AspeedI2CBus *bus, uint64_t value) > >>> { > >>> bus->cmd &= ~0xFFFF; > >>> bus->cmd |= value & 0xFFFF; > >>> - bus->intr_status = 0;> + bus->intr_status &= I2CD_INTR_RX_DONE; > >> > >> it deserves a comment to understand which scenario we are trying to handle. > >> > > > > Ok. FWIW, I wonder if intr_status should be touched here in the first place, > > but I neither have the hardware nor a datasheet, so I don't know if any bits > > are auto-cleared. > > I just pushed a patch on my branch with some more explanation : > > https://github.com/legoater/qemu/commits/aspeed-3.1 > That seems to suggest that none of the status bits auto-clears, and that the above code clearing intr_status should be removed entirely. Am I missing something ? Thanks, Guenter