Add a Linux kernel module for ipod.
Rather than have to patch the kernel's network stack at build time to catch ipod ICMP packets in the normal processing path, make it a loadable module that dynamically registers a netfilter hook to check ICMP packets for ipod info. This way, we don't require custom-built kernels anymore to get ipod support. The only drawback to making it a module is that we now have to call emergency_restart() instead of machine_restart(). For x86 kernels, this basically means that we don't do *any* niceties on shutdown. For instance, even machine_restart() shuts down lapics and the iommu and deals with processors. We can't call machine_restart because it's not exported as a symbol that modules can be linked with at load time. kernel_restart() does way too much stuff that could block the reboot if things are in a bad state. Frankly, after looking at the difference between machine_restart and emergency_restart for the x86, we don't care. To build this module, all you should have to do, say, on Fedora, is $ yum install kernel-devel kernel-headers $ cd <moduledir> $ make && sudo make install (as long as you're running the kernel you're building for)
Showing with 269 additions and 0 deletions