Perhaps you are wondering why we need HAL when we already have dmesg? HAL contains a lot more information about hardware than the kernel does. The kernel doesn't need to know all that stuff; it has other jobs to do. You saw how much data HAL holds on your devices. Where does it all come from? From querying the hardware, from the kernel, from various system files, and from information collected by your desktop. In a nutshell, anything on your system that needs hardware information simply asks HAL.