dump_spd_registers seems to have a bug.
After it calls smbus_read_byte it does a 'jz dump_spd_reg_next_dimm'
Why?
Is it looking to see if the loaded data byte is zero? if so then this dosen't work because the 'in' instruction from the read dosen't set the flags.
And even if this did work zeros occur naturally in the spd datastream so skipping the dimm if you get a zero is bad.
I've modified smbus_read_byte to set/clear the carry bit on failure/success and now dump_spd_registers checks that and that seems to work fine.
Is this the right solution or am I still missing something?