init: add supp_hardware_subarch feature detection

A typical issue when introducing new x86 features that require
early init code modifications is not handling the different
x86 supported subarchitectures. Code review typically addresses
this, but regressions are known to have escaped code review, one
example is cr4 shadow setup [0] which on Xen caused crashes,
another more current was kasan [1], this later one is still known
to be broken for Xen and will crash Xen on bootup when enabled.

A typical knee-jerk reaction to this problem is to simply disable
the feature through Kconfig when certain conflicting subarchitectures
are compiled in, this however restricts the kernel binary. To address
this at run time we can require feature subarchitecture capabilities
annotated. By requiring these annotations we can avoid redundant
code checks that would otherwise have handled incompatibitlies in
different code segements for a feature, but more importantly this
also forces clear developer awareness over required subarchitecture
consideations upon development. As with the asm-generic solutions which
enable generic architecture feature code to advance without requiring
all architectures to implement required components, we enable x86
features to advance as different subarchitectures are supported.

A subarch feature detection mechanism also allows us to clean up
the feature depends() callback through the IOMMU init development
solution considerably.

[0] 5054daa285bea ("x86/xen: Initialize cr4 shadow for 64-bit PV(H) guests")
[1] https://lkml.kernel.org/r/CAB=NE6Xs5fepzNtymzT4CueeJZ0KMPETpda114DpL4eMtDswtw@mail.gmail.com

Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org>
10 files changed