[Tue Jan 7 14:23:28 2020] w83627ehf: Found W83627DHG-P chip at 0xfff8
Okay, so the w83627ehf driver does find the chip (in drivers/hwmon/w83627ehf.c:sensors_w83627ehf_init()) via port 0x2e or 0x4e, using drivers/hwmon/w83627ehf.c:w83627ehf_find(). Do note that it does not check the chip like the watchdog driver does.
Do you know this because pointer addr value is not 0, i.e (*addr == 0) condition is not satisfied and thus ENODEV is not returned?
Wait; I goofed. Your sensors-detect output shows that it does NOT find any Nuvoton Super-I/O chips at all.
I somehow assumed that because the w83627ehf module, when loaded, finds the ISA area at 0xfff8, that lm-sensors found it.
That is not correct. If there is no Super-I/O chip at all at ports 0x2e..0x2f or 0x4e..0x4f, forcing the chip id will yield ISA area address 0xfff8, as the "probing" reads 0xff 0xff for the address from unused ports, and the address mask is ~7: 0xffff & (~7) = 0xfff8.
In other words, there is no Super-I/O chip accessible at that port on your machine. (It is common for "standard" I/O ports to read as 0xFF, if they are unused.)
There could be a BIOS/EFI setting to enable it, or indeed the Super-IO chip could be wired to the system management controller (which is more or less like a small subsidiary computer also on the motherboard), and not directly accessible by either main Intel processor.
Yes, superio_inb() returns 0xff:
[Thu Jan 9 13:29:58 2020] DEBUG: superio_enter(): write 0x87 to 0x2e
[Thu Jan 9 13:29:58 2020] DEBUG: superio_enter(): write 0x87 to 0x2e
[Thu Jan 9 13:29:58 2020] DEBUG: superio_enter() returned: 0x0
[Thu Jan 9 13:29:58 2020] DEBUG: superio_outb(): write 0x7 to 0x2e
[Thu Jan 9 13:29:58 2020] DEBUG: superio_outb(): write 0x8 to 0x2f
[Thu Jan 9 13:29:58 2020] DEBUG: superio_inb(): write 0x20 to 0x2e
[Thu Jan 9 13:29:58 2020] DEBUG: superio_inb(): read 0x2f
[Thu Jan 9 13:29:58 2020] w83627hf_wdt: WDT: Detected ID 0xff.
[Thu Jan 9 13:29:58 2020] DEBUG: superio_enter(): write 0x87 to 0x4e
[Thu Jan 9 13:29:58 2020] DEBUG: superio_enter(): write 0x87 to 0x4e
[Thu Jan 9 13:29:58 2020] DEBUG: superio_enter() returned: 0x0
[Thu Jan 9 13:29:58 2020] DEBUG: superio_outb(): write 0x7 to 0x4e
[Thu Jan 9 13:29:58 2020] DEBUG: superio_outb(): write 0x8 to 0x4f
[Thu Jan 9 13:29:58 2020] DEBUG: superio_inb(): write 0x20 to 0x4e
[Thu Jan 9 13:29:58 2020] DEBUG: superio_inb(): read 0x4f
[Thu Jan 9 13:29:58 2020] w83627hf_wdt: WDT: Detected ID 0xff.
[Thu Jan 9 13:29:58 2020] Detection failed!
Okay; this supports that there is nothing responding to writes to and reads from I/O ports 0x2e..0x2f, 0x4e..0x4f at all.
That is, there is no W83527HG super-I/O chip even the kernel can directly access.
I tried this before with W83627HF_ID, but this didn't work. The system still rebooted if watchdog feature in UEFI was enabled. I'll try with W83627DHG_P_ID.
It won't make a difference, I'm afraid.
I am convinced now that the W83527HG chip that is on your motherboard, is connected to the system management controller, and not directly accessible by the main CPUs. We'd need system management controller programming information from Supermicro, and run our code on that, to be able to connect to the chip, but that kind of info is deep secret sauce they'll never divulge.
If this was only to learn to write assembler code, it was a very unfortunate start... I would instead recommend looking at writing your own simple freestanding applications, using the x86-64/AMD64 Linux Kernel ABI directly. If you want, I could start a new programming thread, with a working example, and pointers to relevant information (like where to find how to do syscalls, and find which syscalls are available).
However, in practice, I personally mostly use GCC extended inline assembly in C programs (also works in Arduino environment, because it also uses GCC). I even tend to use built-in intrinsics and
<mmintrin.h> for vectorized (SSE/AVX) calculations, though.
I do very warmly recommend Atmega32u4-based microcontrollers for such learning purposes also, because it has a native USB interface (no programming dongles, can become any kind of max. 12 MBit/s USB device), and can be programmed either in the Arduino environment, or on bare metal using avr-gcc and avr-libc only; avr-gcc also includes an assembler, so you can even write your microcontroller firmware from scratch using assembly only.
Although I like Teensy 2.0 the best (of ATmega32u4-based microcontrollers), I've been happily using the 3€-5€ Pro Micro clones off eBay. (One just needs to remember to treat them as Arduino Leonardos in the Arduino environment, because they come with the Leonardo bootloader. Leonardo itself also uses ATmega32u4, but has the bigger Arduino form-factor.)