[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [RFC PATCH] xen: EXPERT clean-up
On Wed, 4 Nov 2020, Bertrand Marquis wrote: > > On 4 Nov 2020, at 07:34, Jan Beulich <jbeulich@xxxxxxxx> wrote: > > On 03.11.2020 20:37, Stefano Stabellini wrote: > >> On Tue, 3 Nov 2020, Jan Beulich wrote: > >>> On 02.11.2020 22:41, Stefano Stabellini wrote: > >>>> On Mon, 2 Nov 2020, Jan Beulich wrote: > >>>>> On 31.10.2020 01:24, Stefano Stabellini wrote: > >>>>>> @@ -79,8 +79,8 @@ config SBSA_VUART_CONSOLE > >>>>>> SBSA Generic UART implements a subset of ARM PL011 UART. > >>>>>> > >>>>>> config ARM_SSBD > >>>>>> - bool "Speculative Store Bypass Disable" if EXPERT > >>>>>> - depends on HAS_ALTERNATIVE > >>>>>> + bool "Speculative Store Bypass Disable" > >>>>>> + depends on HAS_ALTERNATIVE && EXPERT > >>>>>> default y > >>>>> > >>>>> At the example of this, I'm afraid when the default isn't "n" > >>>>> (or there's no default directive at all, as ought to be > >>>>> equivalent to and preferred over "default n"), such a > >>>>> transformation is not functionally identical: Before your > >>>>> change, with !EXPERT this option defaults to y. After your > >>>>> change this option is unavailable (which resolves to it being > >>>>> off for all consuming purposes). > >>>>> > >>>>> IOW there are reasons to have "if ..." attached to the prompts > >>>>> (for this construct indeed only making the prompt conditional, > >>>>> not the entire option), but there are also cases where the > >>>>> cleanup you do is indeed desirable / helpful. > >>>> > >>>> Yeah, thanks for catching it, it is obviously a problem. > >>>> > >>>> My intention was just to "tag" somehow the options to EXPERT so that it > >>>> would show on the menu. Maybe a better, simpler, way to do it is > >>>> to add the word "EXPERT" to the one line prompt: > >>>> > >>>> config ARM_SSBD > >>>> - bool "Speculative Store Bypass Disable" if EXPERT > >>>> + bool "Speculative Store Bypass Disable (EXPERT)" if EXPERT > >>>> depends on HAS_ALTERNATIVE > >>>> default y > >>>> help > >>>> > >>>> > >>>> What do you think? > >>> > >>> While on the surface this may look like an improvement, I don't > >>> see how it would actually help: If you read the Kconfig file > >>> itself, the dependency is seen anyway. And on the menu I don't > >>> see the point of telling someone who has enabled EXPERT that a > >>> certain option is (or is not) an expert one. If they think > >>> they're experts, so should they be treated. (It was, after all, > >>> a deliberate decision to make enabling expert mode easier, and > >>> hence easier to use for what one might consider not-really- > >>> experts. I realize saying so may be considered tendentious; I > >>> mean it in a purely technical sense, and I'd like to apologize > >>> in advance to anyone not sharing this as a possible perspective > >>> to take.) > >>> > >>> Plus, of course, the addition of such (EXPERT) markers to > >>> future options' prompts is liable to get forgotten now and then, > >>> so sooner or later we'd likely end up with an inconsistent > >>> mixture anyway. > >> > >> I tend to agree with you on everything you wrote. The fundamental issue > >> is that we are (mis)using EXPERT to tag features that are experimental, > >> as defined by SUPPORT.md. > >> > >> It is important to be able to distinguish clearly at the kconfig level > >> options that are (security) supported from options that are > >> unsupported/experimental. Today the only way to do it is with EXPERT > >> which is not great because: > >> > >> - it doesn't convey the idea that it is for unsupported/experimental > >> features > >> - if you want to enable one unsupported feature, it is not clear what > >> you have to do > >> > >> So maybe we should replace EXPERT with UNSUPPORTED (or EXPERIMENTAL) in > >> the Kconfig menu? > > > > If you mean this to be added to prompt texts, then yes, I'd view > > this as helpful. However, ... > > +1 > > > > >> It would make it clearer that by enabling UNSUPPORTED you are going to > >> get a configuration that is not security supported. And ideally we would > >> also tag features like ACPI as UNSUPPORTED as I suggested above. > > > > ... things will get uglier when (just a simple example) something > > is supported on x86, but not on Arm. > > This is true that this could happen but we could easily workaround this > by having arch specific entries selecting the generic one: > > CONFIG_PCI > bool > default n > > CONFIG_X86_PCI > bool if x86 > select CONFIG_PCI > > CONFIG_ARM_PCI > bool if arm > depends on UNSUPPORTED > select CONFIG_PCI > > This is not the full syntax or right variables but you get the idea :-) > > This is making Kconfig more complex but improves the user configuration > experience > so i think this is a win. It is good that we have a potential clean solution for this. However, today this problem is only theoretical because none of the EXPERT options under xen/commons have a different support status on ARM vs x86. So that's not an issue. However, there a few options in xen/common/Kconfig that are honestly more in the original meaning of EXPERT rather than UNSUPPORTED, such as: - CMDLINE - TRACEBUFFER I don't think we want to change CMDLINE from EXPERT to UNSUPPORTED, right? Jan, are there any other options, either under xen/common/Kconfig or xen/arch/x86/Kconfig that you think they should remain EXPERT? So, I think the plan should be to: - introduce a new UNSUPPORTED option, alongside EXPERT - change EXPERT options under xen/arch/arm/Kconfig to UNSUPPORTED - ACPI - HAS_ITS - ARM_SSBD - HARDEN_BRANCH_PREDICTOR - TEE - change other EXPERT options to UNSUPPORTED where it makes sense - e.g. ARGO - EFI_SET_VIRTUAL_ADDRESS_MAP - MEM_SHARING - TBOOT - XEN_SHSTK - Jan, anything else? - add "(UNSUPPORTED)" to the oneline text of every UNSUPPORTED option Do you guys agree?
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |