For some reason (perhaps the Dell implmentation of the NVIDIA device), the
vgapm device driver must register after the NVIDIA device driver to allow for
a functional ACPI suspend and resume cycle.

This patch makes use of the DRIVER_MODULE_ORDERED macro and SI_ORDER_ANY
constants to ensure the ordering of device driver registration.

I have used this patch on a variety of systems with success.

MORE INFO
=========

The video card is not reinitialized properly due to the device driver ordering
of vgapm0 and nvidia0:

    pcib0 pnpinfo _HID=PNP0A03 _UID=0 at handle=\_SB_.PCI0
      pci0
        hostb0 pnpinfo vendor=0x8086 device=0xd132 subvendor=0x1028 subdevice=0x02ef class=0x060000 at slot=0 function=0
        pcib1 pnpinfo vendor=0x8086 device=0xd138 subvendor=0x1028 subdevice=0x02ef class=0x060400 at slot=3 function=0 handle=\_SB_.PCI0.AGP1
          pci1
            vgapci0 pnpinfo vendor=0x10de device=0x061f subvendor=0x1028 subdevice=0x02ef class=0x030000 at slot=0 function=0 handle=\_SB_.PCI0.AGP1.VID_
              vgapm0
              nvidia0

After applying the fix, rebuild the kernel (install, and reboot). After boot,
notice the vgapm0 device driver is registered after the nvidia0 device driver:

    pcib0 pnpinfo _HID=PNP0A03 _UID=0 at handle=\_SB_.PCI0
      pci0
        hostb0 pnpinfo vendor=0x8086 device=0xd132 subvendor=0x1028 subdevice=0x02ef class=0x060000 at slot=0 function=0
        pcib1 pnpinfo vendor=0x8086 device=0xd138 subvendor=0x1028 subdevice=0x02ef class=0x060400 at slot=3 function=0 handle=\_SB_.PCI0.AGP1
          pci1
            vgapci0 pnpinfo vendor=0x10de device=0x061f subvendor=0x1028 subdevice=0x02ef class=0x030000 at slot=0 function=0 handle=\_SB_.PCI0.AGP1.VID_
              nvidia0
              vgapm0

You should be able to perform and suspend/resume cycle successfully.

I need to dig deeper to understand the issue in order to come up with a more
correct fix.