Ah, gotcha. I thought that you were advising to skip any sort of USB related kext installation until post install so I was falling back to the old USB mapping guide using USBInjectAll to temporarily enable USB
Ok, I see. To me USBInjectAll means a range of things including the so-named kext and its derivatives, including tailored versions per-build named with "UIAC", the XhciPortLimit quirk, and what USBmap emits as "dummy".
My experience and readings about USB config breaks the chore down as follows:
1. Pre-install ("Gathering Files") phase to get macOS installed:
(a) If using a Comet Lake (10th gen) you need at least Dortania-generic RHUB aml, or follow Dortania guide to make an RHUB yourself. e.g., using SSDTime in Linux or Win or writing and compiling your own.
Then for all builds connect installer drive, keyboard & mouse into a low numbered port according to the system/board docs and hope it works to run the installer. This usually can be made to work to get macOS going.
-or-
(b) Use Windows USBToolBox to make a full map ready for macOS installation.
2. Post-install: If you did 1(a) you will need to make a map from macOS using tool of your choice: Hackintool or CorpNewt USBmap or editing an existing map by hand (which are colloquially known as "UIAC" kexts—these get shared among users of popular builds)
My take is that USBInjectAll.kext (and user-tailored variants named with "UIAC") are traditional ways of making all ports available. These may need to be tailored for your chosen SMBIOS and root hubs.
Corp Newt later scripted the above as USBmap.
Hackintool is similar.
The OpenCore XhciPortLimit Kernel quirk came out alongside USBInjectAll.kext and made it simpler to enable all ports for mapping with Hackintool, as described by the USB Beginners Guide. You use one or the other kext or quirk.
Here's what an older OpenCore doc says about the quirk (not the latest doc):
XhciPortLimit
Type: plist boolean
Failsafe: false
Requirement: 10.11 (not required for older)
Description: Patch various kexts (AppleUSBXHCI.kext, AppleUSBXHCIPCI.kext, IOUSBHostFamily.kext) to remove USB port count limit of 15 ports.
Note: This option should be avoided whenever possible. USB port limit is imposed by the amount of used bits in locationID format and there is no possible way to workaround this without heavy OS modification. The only valid solution is to limit the amount of used ports to 15 (discarding some)...
The word on the street is XhciPortLimit worked from El Capitan thru Catalina, but stopped working with Big Sur. At which point some on the forum began coping by recommending installing Catalina, using it to build a map according USB Beginners Guide, then upgrading to later macOS.
CorpNewt USBmap script supports 1(a) during post-install. It avoids the need for the XhciPortLimit quirk or USBInjectAll by preparing a temporary kext ("dummy" which is a locally tailored USBInjectAll.kext) to enable ports on a root so that they can be tested and mapped. Post-installation adding of "dummy" to OC and rebooting to activate it is what gives rise to the question of "Restart" in this thread title.
When mapping during post-install,
there's a tertiary blob of lore which I am still unclear about: The 26 port maximum configurable by mapping.
I see it as follows (this may be wrong): macOS has an absolute upper limit of 26 ports that can be addressed per root hub (again, USB 2 and USB 3 count separately) so if your kit has more than 26 logical ports, mapping gets sticky. But this doesn't come up in many builds.
By looking at ACPI, a mapping tool under macOS may be able to see more than 26? But regardless, there's no way to address more than 26, and of these the list must be pared down to fit into macOS 15 port active limit so they can be tested by the tool and go into final map. So this is the purpose of whatever way you "inject all": to see as many logical ports as possible (26 max), to detect their type, and make room for what you need under the 15 limit.
If you use Windows USBToolbox, all of this is academic. Windows is not limited during detection, you just make your choice of 15 for the map, put into OpenCore and done.
Whatever way you approach it with OpenCore, I believe the end-game is always to produce a codeless kext that includes the proper SMBIOS and root hub traits with a list of ports (max 26), enumerated agreeably for your build, that restricts active ports to 15, and properly identifies each connector type.
ANYONE WITH MORE DETAILS OR CAN CLARIFY, IT WOULD BE AWESOME TO READ. I have been trying to grok this topic for years and tried to write a USBmap beginners guide, but no matter how many times I think this through, I always end up flummoxed.
(Total aside: A couple years ago, USBToolBox was disregarded by some forum mods due to general fear of Windows malware. I never came across any report of an was ever an actual problem with it.)