[AT&T, Rogers HTC One X, Telstra One XL] flar2:
I'll post this explanation that I posted in the EVO LTE threads:

As has been discussed before, there are different voltage tables depending on whether the chip in your phone is marked as "fast", "nominal" or "slow". In the stock configuration, compared to nominal chips, slow chips get +50 overvolt and fast chips get -50 undervolt.

The vdd_level parameter in the ElementalX kernel only affects the overclocked frequencies (1647 to 1890MHz) and is intended to allow people to save battery by undervolting (if they can) or to overclock higher by applying extra voltage. The default vdd_level is basically a continuation of the standard voltage values for the overclocked frequencies for each type of chip. Undervolting is roughly -25mV and extra voltage is roughly +25mV, but the problem here is that the highest voltage allowed is 1300, which is not enough to overclock on most phones. Custom kernels built from source would increase the voltage to 1350. I haven't been successful at raising the voltage past 1300 using a module (device crashes instantly). So this is the main reason why we don't have the overclocking headroom that we would with a custom kernel.

vdd_level=1 sets undervolt (-25)

vdd_level=2 is default

vdd_level=3 sets extra voltage (+25 where possible)

The min_vdd setting only changes the voltage for the lowest cpu frequency (192 or 384, depending on your choice). The parameter default is 0, which does not change the voltage for this frequency, meaning that the voltage will be 850 (fast), 900 (nominal) or 950 (slow). Values 1 thru 5 allow undervolting for the min frequency. Undervolting here will save battery because this is the idle frequency for CPU0.

min_vdd=1 sets 800mV

min_vdd=2 sets 825mV

min_vdd=3 sets 850mV

min_vdd=4 sets 875mV

min_vdd=5 sets 900mV

The CPU control module (oc_mod.ko) does not change the voltage for frequencies between 486 and 1512.

The change "now reads PVS efuse and sets appropriate voltage levels" is simply that the CPU control module included with ElementalX now checks whether the phone is "fast", "nominal" or "slow" and sets the appropriate voltage table. Before it just brute forced all three tables to ensure the one the phone was using got changed. Not a big deal, just more efficient. As a little bonus, if you read the kernel messages (dmesg or cat /proc/kmsg) right after inserting oc_mod.ko, you can see whether your phone is marked as fast, nominal or slow.

Summary: insmod oc_mod.ko without parameters leaves minimum voltage at stock value. It is not possible to add any higher voltages beyond 1300 to overclock frequencies. Default parameters are min_vdd=0 vdd_level=2 optimize=1 min_freq=384, which translates to minimum voltage unchanged, default overclock voltages, optimize for stability and leave 384MHz as the minimum frequency.

Here are the voltage tables:

Stock:

Elemental:

Flash disks are pretty fast, it's hard to tell the difference, but even so, disk i/o is probably the biggest bottleneck on current devices. Even though the effect is subtle, I think adding this scheduler is a big reason why people are finding the recent versions of elemental to be "snappy."