Revert "Rewrite idr to use a dumber algorithm that admits pserialized use."

This reverts commit 3a389a1cb20777fb73575f0514b96265052ac1ea.

I don't know what I was smoking with this; just need to change the
rwlock to a spin lock and we'll be good!
Convert linux_idr(9) to use spin locks.

idr_for_each is unlocked; caller must exclude modifications.

Eventually this should be rewritten with pserialize and a fancy
bitmap algorithm, but this *actually* works for now.
Lock the right uvmobject for uvm_pagelookup.
Make DRM_IOCTL_GET_CLIENT work except for pid and uid.

The pid and uid don't make sense because the client is associated
with a file descriptor, which may be held by multiple processes, and
even if only one holds it (which is probably the only sensible state
of affairs), there's no index.
Fix copyoutstr usage in drm_version_string.
Add open drm files to the device file list.
Destroy the waitqueue ring->irq_queue in intel_cleanup_ring_buffer.
Make it a bug to drm_mm_takedown when there remain allocated blocks.
Drop another reference in do_destroy if the context is current.
Implement drm_pci_set_busid and drm_pci_set_unique.
Use dev_priv->irq_lock for ring->irq_queue, not dev->struct_mutex.

We need to use a spin lock here, because we need to exclude interrupt
handlers.
Clean up the still-not-yet-functional genfb attachment cruft a bit.
Rewrite drm locking support for NetBSD.
Clean up initialization failures in drm2_modcmd.
Take master->lock.spinlock to read master->lock.hw_lock.
Pesky ampersands!
Unconditionalize the genfb attachment.
Hack up vblank events and make them work.
Use nanouptime, not nanotime, for ktime_get.

As far as I can tell, ktime_get is supposed to provide monotonic
time, not a clock synchronized to TAI.
Initialize the nsec correctly in ktime_get.