On 12/09/13(Thu) 08:16, RD Thrush wrote: > On 09/12/13 05:15, Martin Pieuchot wrote: > > [...] > > > > Could you try the diff below on the v1 machine and tell me if it helps? > > Thanks, I don't think it helped...
By looking at your new log, I believe it did ;) > After booting the new kernel, upon first use of the kvm switch, the serial > console began filling with diagnostics which (to my untrained eye) looked > similar to the pre-patch session. v1-2. Since I was unable to remotely ssh, I > interrupted ddb and set ehcidebug=1 but was unable to remotely ssh. > ehcidebug=0 > allowed remote ssh and normal operations resumed. > > <http://arp.thrush.com/openbsd/ehci_idone/v1/v1-3> has the associated serial > console. > > Let me know if I can provide further info. Could you reproduce once again this manipulation with the diff below applied on top of the previous one? > >> WRT to the other machine, x4, I installed the patch and have not yet had a > >> problem. However, with ehcidebug=5, the following 2 line message is issued > >> about once per second: > >> ehci_intrlist_timeout > >> ehci_check_intr: ex=0xffff800000238c00 > > > > That's expected, thanks for confirming the problem cannot be reproduced > > with this diff with an ATI controller. > > Since the problem has been intermittent since Nov 2012, I'm not sure enough > time/kvm usage has occurred for certainty about that fix. Since this diff is a backport of what has been done in FreeBSD and I already had a similar report from another developer with the same controller, I'm quite confident. > I will run a custom MP kernel with your pci/ehci_pci.c patch on the x4 machine > whenever I install a new snapshot and let you know if I notice the ehci_idone > issue. Please let me know. Index: uhidev.c =================================================================== RCS file: /home/ncvs/src/sys/dev/usb/uhidev.c,v retrieving revision 1.44 diff -u -p -r1.44 uhidev.c --- uhidev.c 7 May 2013 08:44:38 -0000 1.44 +++ uhidev.c 12 Sep 2013 14:25:52 -0000 @@ -393,7 +393,7 @@ uhidev_intr(struct usbd_xfer *xfer, void } #endif - if (status == USBD_CANCELLED) + if (status == USBD_CANCELLED || status == USBD_IOERROR) return; if (status != USBD_NORMAL_COMPLETION) {

