On Mon, 4 Mar 2024 at 15:58, Sven Schnelle <sv...@stackframe.org> wrote: > > Peter Maydell <peter.mayd...@linaro.org> writes: > > > On Thu, 29 Feb 2024 at 20:44, Sven Schnelle <sv...@stackframe.org> wrote: > >> > >> HP-UX 10.20 seems to make the lsi53c895a spinning on a memory location > >> under certain circumstances. As the SCSI controller and CPU are not > >> running at the same time this loop will never finish. After some > >> time, the check loop interrupts with a unexpected device disconnect. > >> This works, but is slow because the kernel resets the scsi controller. > >> Instead of signaling UDC, start a timer and exit the loop. Until the > >> timer fires, the CPU can process instructions which might changes the > >> memory location. > >> > >> The limit of instructions is also reduced because scripts running on > >> the SCSI processor are usually very short. This keeps the time until > >> the loop is exit short. > > > > "exited" > > > >> > >> Suggested-by: Peter Maydell <peter.mayd...@linaro.org> > >> Signed-off-by: Sven Schnelle <sv...@stackframe.org> > >> --- > >> Changes in v2: > >> - update comment in lsi_execute_script() > >> - reset waiting state and del timer in lsi_execute_script() to > >> handle the case where script processing is triggered via > >> register write, and not from the pending timer > >> - delete timer in lsi_scsi_exit() > > > > Other than the s/host/guest/ comment fix, > > Reviewed-by: Peter Maydell <peter.mayd...@linaro.org> > > > > I don't suppose anybody has a setup with the Windows drivers > > to test this on? (commit ee4d919f30f13 suggests that at least > > Windows XP and 2003 had this problem.) > > I have a Windows XP VM with lsi53c895a. I just fired it up and added > a qemu_log() in the timer path, and seen it trigger once while copying > a few files. It looks like Windows XP (or better the SCSI driver) also > works with this patch.
Excellent; thanks for testing. -- PMM