Changeset 87971 in vbox for trunk/src/VBox/Devices
- Timestamp:
- Mar 5, 2021 2:31:15 PM (4 years ago)
- svn:sync-xref-src-repo-rev:
- 143079
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/USB/DevOHCI.cpp
r87773 r87971 1243 1243 Log(("ohci: %s reset%s\n", fNewMode == OHCI_USB_RESET ? "hardware" : "software", 1244 1244 fResetOnLinux ? " (reset on linux)" : "")); 1245 1246 /* Clear list enable bits first, so that any processing currently in progress terminates quickly. */ 1247 pThis->ctl &= ~(OHCI_CTL_BLE | OHCI_CTL_CLE | OHCI_CTL_PLE); 1245 1248 1246 1249 /* Stop the bus in any case, disabling walking the lists. */ … … 3730 3733 3731 3734 uint32_t EdAddr = pThis->bulk_head; 3732 while (EdAddr )3735 while (EdAddr && (pThis->ctl & OHCI_CTL_BLE)) 3733 3736 { 3734 3737 OHCIED Ed; … … 3797 3800 } 3798 3801 3799 /* next end point */ 3802 /* Trivial loop detection. */ 3803 if (EdAddr == (Ed.NextED & ED_PTR_MASK)) 3804 break; 3805 /* Proceed to the next endpoint. */ 3800 3806 EdAddr = Ed.NextED & ED_PTR_MASK; 3801 3802 3807 } 3803 3808 … … 3847 3852 } 3848 3853 } 3849 /* next endpoint */ 3854 3855 /* Trivial loop detection. */ 3856 if (EdAddr == (Ed.NextED & ED_PTR_MASK)) 3857 break; 3858 /* Proceed to the next endpoint. */ 3850 3859 EdAddr = Ed.NextED & ED_PTR_MASK; 3851 3860 } … … 3877 3886 3878 3887 uint32_t EdAddr = pThis->ctrl_head; 3879 while (EdAddr )3888 while (EdAddr && (pThis->ctl & OHCI_CTL_CLE)) 3880 3889 { 3881 3890 OHCIED Ed; … … 3913 3922 } 3914 3923 3915 /* next end point */ 3924 /* Trivial loop detection. */ 3925 if (EdAddr == (Ed.NextED & ED_PTR_MASK)) 3926 break; 3927 /* Proceed to the next endpoint. */ 3916 3928 EdAddr = Ed.NextED & ED_PTR_MASK; 3917 3929 } … … 3953 3965 * Iterate the endpoint list. 3954 3966 */ 3955 while (EdAddr )3967 while (EdAddr && (pThis->ctl & OHCI_CTL_PLE)) 3956 3968 { 3957 3969 OHCIED Ed; … … 4000 4012 } 4001 4013 } 4002 /* next end point */ 4014 /* Trivial loop detection. */ 4015 if (EdAddr == (Ed.NextED & ED_PTR_MASK)) 4016 break; 4017 /* Proceed to the next endpoint. */ 4003 4018 EdAddr = Ed.NextED & ED_PTR_MASK; 4004 4019 } … … 4159 4174 } while (TdAddr != (Ed.TailP & ED_PTR_MASK)); 4160 4175 } 4176 /* Trivial loop detection. */ 4177 if (EdAddr == (Ed.NextED & ED_PTR_MASK)) 4178 break; 4179 /* Proceed to the next endpoint. */ 4161 4180 EdAddr = Ed.NextED & ED_PTR_MASK; 4162 4181 }
Note:
See TracChangeset
for help on using the changeset viewer.