microsoft / mu_feature_config Goto Github PK
View Code? Open in Web Editor NEWProject Mu - Feature Repo - UEFI User Config and Management Support
Home Page: https://microsoft.github.io/mu/
License: Other
Project Mu - Feature Repo - UEFI User Config and Management Support
Home Page: https://microsoft.github.io/mu/
License: Other
Can the documentation be updated to show how to use the ConfigEditor to generate an individual profile CSV file?
Someone else needs to make the change
No maintainer feedback needed
No response
With the input xml example below, SetupDataPkg/Tools/KnobService.py
generates the following output in the private header file.
The setter function is missing a couple of new lines and isn't properly formatted.
Input XML:
<ConfigSchema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="configschema.xsd">
<!-- namespace indicates the GUID namespace the values are stored in -->
<Knobs namespace="{5db63705-b75f-429b-a331-0fe95af09e19}">
<!-- configuration knobs -->
<Knob name="example" type="bool" help="Example help" />
<!-- end configuration knobs -->
</Knobs>
</ConfigSchema>
Output:
#ifdef CONFIG_SET_VARIABLES
// Set the current value of the example knob
bool config_set_example(bool value) { return set_knob_value(KNOB_example, &value);
}
#endif // CONFIG_SET_VARIABLES
The generated setter output should look like something like this:
#ifdef CONFIG_SET_VARIABLES
// Set the current value of the example knob
bool config_set_example(bool value) {
return set_knob_value(KNOB_example, &value);
}
#endif // CONFIG_SET_VARIABLES
Use the example xml above to auto-generate configuration knob header files using SetupDataPkg/Tools/KnobService.py
. The setter-function in the private header file (priv_hdr.h
) will be malformed.
KnobService.py generateheader example.xml pub_hdr.h priv_hdr.h
- OS(s): Ubuntu 20.04
- Tool Chain(s): gcc-arm-10.2-2020.11
- Targets Impacted: RELEASE, DEBUG
Commit: ae681b2
Medium
Someone else needs to fix it
No maintainer feedback needed
No response
List only the delta of configuration field in CSV compare to generic xml file instead of listing the whole structure in CSV file.
In the past with YAML/DLT design, we can just list delta of configuration item in DLT file, but now with XML/CSV design, if an item is under one structure, it needs to list the delta in structure level instead of the actual configuration item.
In a product development, when we touch the XML file, it cannot guarantee the CSV file list is compatible with the new updated XML file, so everytime when the XML get updated, the CSV file also need to be re-generated by ConfigEditor.py tool.
Align with the original YAML/DLT experience that only need to list the delta in configuration item level instead of structure level in XML/CSV design
No response
Medium
Someone else needs to implement the feature
Maintainer feedback requested
No response
The request is to adopt semantic versioning in this repository.
This is similar to other Project Mu repos that have such as:
This allows consumers to more easily ingest releases per the goals of the semantic versioning specification.
It also allows workflows in Mu DevOps to operate on the repo such as:
Switch repository versioning to comply with the Semantic Versioning 2.0.0 Specification.
Keep as-is. This has the disadvantage of inconsistent versioning limiting compatibility with tools and consuming processes.
Low
Someone else needs to implement the feature
Maintainer feedback requested
No response
Currently, the autogen headers would produce 4 global variables, which ideally will be included in a data library for a module to produce the final content in the policy service (see implementation in OEM sample package). However, these global variables are being referenced by consumers through externs. This starts to cause the downstream users to change such content and make the localized PR work without updating the autogen script.
This ticket is logged to fill in the contract of autogen variables and their users, so that the data library update will need to originate from the autogen script. And also fix a downstream request of adding the support of profile names.
Just run the autogen header creator. OEM sample can update their referenced global variables and still pass the build. But the platforms that consume the autogen pipeline will break the build because the linker will fail.
- OS(s): Ubuntu 22.04
- Tool Chain(s): GCC5
- Targets Impacted: DEBUG, RELEASE
Top of main.
High
I will fix it
No maintainer feedback needed
No response
When dealing with multiple CSV files for profile support, error messages are sparse (i.e. the specific filename being processed is not displayed, and this can result in difficulty in finding the offending code.
Other minor annoyances:
in CSV profile, having a blank line at the end of the file causes tool failure:
INFO - File "C:\Code\mu_tiano_platforms\Features\CONFIG\SetupDataPkg\Tools\VariableList.py", line 1201, in read_csv
INFO - knob_value_string = row[value_index]
Enum Knob override in Profile CSV cannot have a leading space. Example:
Modify CfgData.xml in Q35 to add enum and enum knob. Same limitation doesn't exist for
<Enums>
<Enum name="EnableDisableCombo" help="">
<Value name="Disabled" value="0" help="" />
<Value name="Enabled" value="1" help="" />
</Enum>
</Enums>
<Knob name="ExampleEnum" type="EnableDisableCombo" default="Enabled" help="" />
in CfgData.csv, add override with leading space:
*,ExampleEnum, Disabled,00 00 00 00,
INFO - File "C:\Code\mu_tiano_platforms\Features\CONFIG\SetupDataPkg\Tools\VariableList.py", line 365, in string_to_object
INFO - raise ParseError(
INFO - VariableList.ParseError: Value ' Disabled' is not a valid value of enum 'EnableDisableCombo'
enum values are a maximum of uint32_t, which is in conflict with flexibility of yaml.
Would it be possible to specify a size for enums? or to increase their default size to uint64_t to account for larger values that need storing?
Minor changes/improvements
No response
Low
I will implement the feature
No maintainer feedback needed
No response
If the ConfigPolicyTo[Silicon|Platform]Mapper driver get dispatched in Pre-Memory phase, when we try to use ConfigGet*** APIs from ConfigClientGenerated.h to retrieve the config back, all the data is 0 due to the memory is still not ready to use, and in each ConfigGet*** APIs, it calls InitConfigPolicyCache() to get CloudConfigPolicy and store in CachedPolicy, which is a global variable in C code, so in Pre-Memory phase, the global variable cannot be updated success, all the data will be kept as 0.
To make the design generic and can be adopted to all system architecture, needs to consider the case that ConfigPolicyTo[Silicon|Platform]Mapper get dispatched in Pre-Memory phase, and ConfigGet*** APIs from ConfigClientGenerated.h should work properly in Pre-Memory environment, so global variables consumption in Pre-Memory phase should be prevented.
Call ConfigGet*** APIs from ConfigClientGenerated.h, the return status is success, but all the data we retrieved will still be zero.
- OS(s): Windows 11
- Tool Chain(s): VS2022
- Targets Impacted: RELEASE, DEBUG
v1.0.0
High
Someone else needs to fix it
Maintainer feedback requested
No response
Enums naming, and enum value naming, is limited. The enums names are limited by the function is_valid_name(), which tries to limit the names to C compatible names. Given that enums are not a c struct, and will not be generated into C code, these limitations should not exist.
Example:
Problem:
A name starting with a digit is now allowed.
Example:
Problem:
Spaces are not allowed in Value Names
Example:
New function to enable c identifier compliance checking ( is_valid_c_identifier)
Modify existing function is_valid_name to allow for useful information (spaces, parentheses and starting with digits)
No response
Medium
I will implement the feature
No maintainer feedback needed
No response
The ConfigKnobShimLib only supports MM_STANDALONE module type, but in x86, the system may also need to get config under SMM mode.
No response
Medium
Someone else needs to implement the feature
Maintainer feedback requested
No response
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.