Hardware fault diagnosis