Skip to content

Commit 554e9f9

Browse files
tirupatihemanthsaiarcot895
authored andcommitted
Update hw-mgmt and sdk automatic integration for Trixie (sonic-net#47)
* [Debian 13] update automatic hw-mgmt integration tool for patches and kconfig-inclusions * [Debian 13] update automatic hw-mgmt integration tool to remove kconfig-exclusions * [Debian 13] Fix tests for automatic hw_mgmt integration tool * [Debian 13] Updated arm64 section update * Fix hardware management integration tests * sdk automatic integration
1 parent 1af92a1 commit 554e9f9

16 files changed

Lines changed: 160 additions & 232 deletions

platform/mellanox/integration-scripts.mk

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -139,16 +139,20 @@ endif
139139

140140
# Commit the changes in linux kernel and and log the diff
141141
pushd $(BUILD_WORKDIR)/src/sonic-linux-kernel
142-
git add -- patch/
142+
git add -- patches-sonic/
143+
git add -- config.local/
143144

144145
echo -en "\n###-> series file changes in sonic-linux-kernel <-###\n" >> ${HWMGMT_USER_OUTFILE}
145-
git diff --no-color --staged -- patch/series >> ${HWMGMT_USER_OUTFILE}
146+
git diff --no-color --staged -- patches-sonic/series >> ${HWMGMT_USER_OUTFILE}
146147

147-
echo -en "\n###-> kconfig-inclusions file changes in sonic-linux-kernel <-###\n" >> ${HWMGMT_USER_OUTFILE}
148-
git diff --no-color --staged -- patch/kconfig-inclusions >> ${HWMGMT_USER_OUTFILE}
148+
echo -en "\n###-> Common config changes in sonic-linux-kernel <-###\n" >> ${HWMGMT_USER_OUTFILE}
149+
git diff --no-color --staged -- config.local/featureset-sonic/config >> ${HWMGMT_USER_OUTFILE}
149150

150-
echo -en "\n###-> kconfig-exclusions file changes in sonic-linux-kernel <-###\n" >> ${HWMGMT_USER_OUTFILE}
151-
git diff --no-color --staged -- patch/kconfig-exclusions >> ${HWMGMT_USER_OUTFILE}
151+
echo -en "\n###-> AMD64 config changes in sonic-linux-kernel <-###\n" >> ${HWMGMT_USER_OUTFILE}
152+
git diff --no-color --staged -- config.local/amd64/config.sonic >> ${HWMGMT_USER_OUTFILE}
153+
154+
echo -en "\n###-> ARM64 config changes in sonic-linux-kernel <-###\n" >> ${HWMGMT_USER_OUTFILE}
155+
git diff --no-color --staged -- config.local/arm64/config.sonic-mellanox >> ${HWMGMT_USER_OUTFILE}
152156

153157
echo -en '\n###-> Summary of files updated in sonic-linux-kernel <-###\n' >> ${HWMGMT_USER_OUTFILE}
154158
git diff --no-color --staged --stat --output=${TMPFILE_OUT}
@@ -223,10 +227,10 @@ endif
223227

224228
# Commit the changes in linux kernel and and log the diff
225229
pushd $(BUILD_WORKDIR)/src/sonic-linux-kernel
226-
git add -- patch/
230+
git add -- patches-sonic/
227231

228232
echo -en "\n###-> series file changes in sonic-linux-kernel <-###\n" >> ${SDK_USER_OUTFILE}
229-
git diff --no-color --staged -- patch/series >> ${SDK_USER_OUTFILE}
233+
git diff --no-color --staged -- patches-sonic/series >> ${SDK_USER_OUTFILE}
230234

231235
echo -en "\n###-> summary of files updated in sonic-linux-kernel <-###\n" >> ${SDK_USER_OUTFILE}
232236
git diff --no-color --staged --stat >> ${SDK_USER_OUTFILE}

platform/mellanox/integration-scripts/helper.py

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,11 @@
2525
MLNX_ARM_KFG_SECTION = "mellanox-arm64"
2626
SDK_MARKER = "mellanox_sdk"
2727
HW_MGMT_MARKER = "mellanox_hw_mgmt"
28-
SLK_PATCH_LOC = "src/sonic-linux-kernel/patch/"
29-
SLK_KCONFIG = SLK_PATCH_LOC + "kconfig-inclusions"
30-
SLK_KCONFIG_EXCLUDE = SLK_PATCH_LOC + "kconfig-exclusions"
28+
SLK_PATCH_LOC = "src/sonic-linux-kernel/patches-sonic/"
29+
SLK_KCONFIG_DIR = "src/sonic-linux-kernel/config.local/"
30+
SLK_KCONFIG = SLK_KCONFIG_DIR+"featureset-sonic/config"
31+
SLK_KCONFIG_AMD64 = SLK_KCONFIG_DIR+"amd64/config.sonic"
32+
SLK_KCONFIG_ARM64 = SLK_KCONFIG_DIR+"arm64/config.sonic-mellanox"
3133
SLK_SERIES = SLK_PATCH_LOC + "series"
3234
NON_UP_PATCH_DIR = "platform/mellanox/non-upstream-patches/"
3335
NON_UP_PATCH_LOC = NON_UP_PATCH_DIR + "patches"
@@ -125,12 +127,6 @@ def insert_kcfg_data(lines: list, start: int, end: int, new_data: OrderedDict) -
125127
# inserts data into the lines, escape every lines
126128
new_data_lines = ["{}={}\n".format(cfg, val) for (cfg, val) in new_data.items()]
127129
return FileHandler.insert_lines(lines, start, end, new_data_lines)
128-
129-
@staticmethod
130-
def insert_kcfg_excl_data(lines: list, start: int, end: int, new_data: OrderedDict) -> dict:
131-
# inserts data into the lines, escape every lines
132-
new_data_lines = ["{}\n".format(cfg) for (cfg, val) in new_data.items()]
133-
return FileHandler.insert_lines(lines, start, end, new_data_lines)
134130

135131

136132
class Action():

platform/mellanox/integration-scripts/hwmgmt_helper.py

Lines changed: 81 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ def parse_noarch_inc_exc(self):
109109
del KCFGData.x86_down[key]
110110
KCFGData.noarch_down[key] = val
111111

112-
def insert_arm64_section(self, raw_lines: list, arm_data: OrderedDict, is_exclusion=False, section=MLNX_ARM_KFG_SECTION) -> list:
112+
def insert_arm64_section(self, raw_lines: list, arm_data: OrderedDict, section=MLNX_ARM_KFG_SECTION) -> list:
113113
# For arm64, config is not added under markers, but it is added under the section [mellanox-arm64]
114114
# This design decision is taken because of the possibility that there might be conflicting options
115115
# present between two different arm64 platforms
@@ -121,10 +121,7 @@ def insert_arm64_section(self, raw_lines: list, arm_data: OrderedDict, is_exclus
121121
if not configParser.has_section(MLNX_ARM_KFG_SECTION):
122122
configParser.add_section(MLNX_ARM_KFG_SECTION)
123123
for (key, val) in arm_data.items():
124-
if not is_exclusion:
125-
configParser.set(MLNX_ARM_KFG_SECTION, key, val)
126-
else:
127-
configParser.set(MLNX_ARM_KFG_SECTION, key)
124+
configParser.set(MLNX_ARM_KFG_SECTION, key, val)
128125
str_io = io.StringIO()
129126
configParser.write(str_io, space_around_delimiters=False)
130127
return str_io.getvalue().splitlines(True)
@@ -134,67 +131,96 @@ def insert_arm64_section(self, raw_lines: list, arm_data: OrderedDict, is_exclus
134131
return raw_lines
135132

136133

137-
def get_kconfig_inc(self) -> list:
138-
kcfg_inc_raw = FileHandler.read_raw(os.path.join(self.args.build_root, SLK_KCONFIG))
134+
def get_upstream_kconfig(self) -> list:
139135
# Insert common config
140-
noarch_start, noarch_end = FileHandler.find_marker_indices(kcfg_inc_raw, MLNX_NOARCH_MARKER)
141-
kcfg_inc_raw = FileHandler.insert_kcfg_data(kcfg_inc_raw, noarch_start, noarch_end, KCFGData.noarch_incl)
136+
common_config = FileHandler.read_raw(os.path.join(self.args.build_root, SLK_KCONFIG))
137+
noarch_start, noarch_end = FileHandler.find_marker_indices(common_config, MLNX_NOARCH_MARKER)
138+
noarch_final = OrderedDict(list(KCFGData.noarch_incl.items()) + [(k, "n") for k in KCFGData.noarch_excl.keys()])
139+
common_config = FileHandler.insert_kcfg_data(common_config, noarch_start, noarch_end, noarch_final)
142140
# Insert x86 config
143-
x86_start, x86_end = FileHandler.find_marker_indices(kcfg_inc_raw, MLNX_KFG_MARKER)
144-
kcfg_inc_raw = FileHandler.insert_kcfg_data(kcfg_inc_raw, x86_start, x86_end, KCFGData.x86_incl)
141+
amd64_config = FileHandler.read_raw(os.path.join(self.args.build_root, SLK_KCONFIG_AMD64))
142+
x86_start, x86_end = FileHandler.find_marker_indices(amd64_config, MLNX_KFG_MARKER)
143+
x86_final = OrderedDict(list(KCFGData.x86_incl.items()) + [(k, "n") for k in KCFGData.x86_excl.keys()])
144+
amd64_config = FileHandler.insert_kcfg_data(amd64_config, x86_start, x86_end, x86_final)
145145
# Insert arm config
146-
kcfg_inc_raw = self.insert_arm64_section(kcfg_inc_raw, KCFGData.arm_incl)
147-
print("\n -> INFO: kconfig-inclusion file is generated \n {}".format("".join(kcfg_inc_raw)))
148-
return kcfg_inc_raw
146+
arm64_config = FileHandler.read_raw(os.path.join(self.args.build_root, SLK_KCONFIG_ARM64))
147+
arm_final = OrderedDict(list(KCFGData.arm_incl.items()) + [(k, "n") for k in KCFGData.arm_excl.keys()])
148+
arm64_config = self.insert_arm64_section(arm64_config, arm_final)
149+
print("\n -> INFO: kconfig-inclusion file is generated \n {}".format("".join(arm64_config)))
150+
return common_config, amd64_config, arm64_config
149151

150-
151-
def get_downstream_kconfig_inc(self, new_kcfg_upstream) -> list:
152-
kcfg_final = copy.deepcopy(new_kcfg_upstream)
152+
def get_downstream_kconfig_diff(self, common_config_upstream, amd64_config_upstream, arm64_config_upstream) -> list:
153153
# insert common Kconfig
154-
noarch_start, noarch_end = FileHandler.find_marker_indices(kcfg_final, MLNX_NOARCH_MARKER)
155-
noarch_final = OrderedDict(list(KCFGData.noarch_incl.items()) + list(KCFGData.noarch_down.items()))
156-
kcfg_final = FileHandler.insert_kcfg_data(kcfg_final, noarch_start, noarch_end, noarch_final)
154+
common_kcfg_final = copy.deepcopy(common_config_upstream)
155+
noarch_start, noarch_end = FileHandler.find_marker_indices(common_kcfg_final, MLNX_NOARCH_MARKER)
156+
noarch_final = OrderedDict(
157+
list(KCFGData.noarch_incl.items()) +
158+
[(k, "n") for k in KCFGData.noarch_excl.keys()] +
159+
list(KCFGData.noarch_down.items())
160+
)
161+
common_kcfg_final = FileHandler.insert_kcfg_data(common_kcfg_final, noarch_start, noarch_end, noarch_final)
162+
157163
# insert x86 Kconfig
158-
x86_start, x86_end = FileHandler.find_marker_indices(kcfg_final, MLNX_KFG_MARKER)
159-
x86_final = OrderedDict(list(KCFGData.x86_incl.items()) + list(KCFGData.x86_down.items()))
160-
kcfg_final = FileHandler.insert_kcfg_data(kcfg_final, x86_start, x86_end, x86_final)
164+
amd64_kcfg_final = copy.deepcopy(amd64_config_upstream)
165+
x86_start, x86_end = FileHandler.find_marker_indices(amd64_kcfg_final, MLNX_KFG_MARKER)
166+
x86_final = OrderedDict(
167+
list(KCFGData.x86_incl.items()) +
168+
[(k, "n") for k in KCFGData.x86_excl.keys()] +
169+
list(KCFGData.x86_down.items())
170+
)
171+
amd64_kcfg_final = FileHandler.insert_kcfg_data(amd64_kcfg_final, x86_start, x86_end, x86_final)
172+
161173
# insert arm Kconfig
162-
arm_final = OrderedDict(list(KCFGData.arm_incl.items()) + list(KCFGData.arm_down.items()))
163-
kcfg_final = self.insert_arm64_section(kcfg_final, arm_final)
164-
# generate diff
165-
diff = difflib.unified_diff(new_kcfg_upstream, kcfg_final, fromfile='a/patch/kconfig-inclusions', tofile="b/patch/kconfig-inclusions", lineterm="\n")
166-
lines = []
167-
for line in diff:
168-
lines.append(line)
169-
print("\n -> INFO: kconfig-inclusion.patch file is generated \n{}".format("".join(lines)))
170-
return lines
171-
172-
173-
def get_kconfig_excl(self) -> list:
174-
# noarch_excl
175-
kcfg_excl_raw = FileHandler.read_raw(os.path.join(self.args.build_root, SLK_KCONFIG_EXCLUDE))
176-
# insert common Kconfig
177-
noarch_start, noarch_end = FileHandler.find_marker_indices(kcfg_excl_raw, MLNX_NOARCH_MARKER)
178-
kcfg_excl_raw = FileHandler.insert_kcfg_excl_data(kcfg_excl_raw, noarch_start, noarch_end, KCFGData.noarch_excl)
179-
# insert x86 Kconfig
180-
x86_start, x86_end = FileHandler.find_marker_indices(kcfg_excl_raw, MLNX_KFG_MARKER)
181-
kcfg_excl_raw = FileHandler.insert_kcfg_excl_data(kcfg_excl_raw, x86_start, x86_end, KCFGData.x86_excl)
182-
# insert arm Kconfig
183-
kcfg_excl_raw = self.insert_arm64_section(kcfg_excl_raw, KCFGData.arm_excl, True)
184-
print("\n -> INFO: kconfig-exclusion file is generated \n{}".format("".join(kcfg_excl_raw)))
185-
return kcfg_excl_raw
174+
arm64_kcfg_final = copy.deepcopy(arm64_config_upstream)
175+
arm_final = OrderedDict(
176+
list(KCFGData.arm_incl.items()) +
177+
[(k, "n") for k in KCFGData.arm_excl.keys()] +
178+
list(KCFGData.arm_down.items())
179+
)
180+
arm64_kcfg_final = self.insert_arm64_section(arm64_kcfg_final, arm_final)
181+
182+
all_lines = []
183+
184+
# Generate diff for common config
185+
common_diff = difflib.unified_diff(common_config_upstream, common_kcfg_final,
186+
fromfile='a/config.local/featureset-sonic/config',
187+
tofile="b/config.local/featureset-sonic/config",
188+
lineterm="\n")
189+
190+
for line in common_diff:
191+
all_lines.append(line)
192+
193+
# Generate diff for amd64 config
194+
amd64_diff = difflib.unified_diff(amd64_config_upstream, amd64_kcfg_final,
195+
fromfile='a/config.local/amd64/config.sonic',
196+
tofile="b/config.local/amd64/config.sonic",
197+
lineterm="\n")
198+
199+
for line in amd64_diff:
200+
all_lines.append(line)
201+
202+
# Generate diff for arm64 config
203+
arm64_diff = difflib.unified_diff(arm64_config_upstream, arm64_kcfg_final,
204+
fromfile='a/config.local/arm64/config.sonic-mellanox',
205+
tofile="b/config.local/arm64/config.sonic-mellanox",
206+
lineterm="\n")
207+
208+
for line in arm64_diff:
209+
all_lines.append(line)
210+
211+
print("\n -> INFO: kconfig-inclusion.patch file is generated \n{}".format("".join(all_lines)))
212+
return all_lines
186213

187214

188215
def perform(self):
189216
self.read_data()
190217
KCFGData.x86_incl, KCFGData.x86_excl = self.parse_inc_exc(KCFGData.x86_base, KCFGData.x86_updated)
191218
KCFGData.arm_incl, KCFGData.arm_excl = self.parse_inc_exc(KCFGData.arm_base, KCFGData.arm_updated)
192219
self.parse_noarch_inc_exc()
193-
# Get the updated kconfig-inclusions
194-
kcfg_inc_upstream = self.get_kconfig_inc()
195-
FileHandler.write_lines(os.path.join(self.args.build_root, SLK_KCONFIG), kcfg_inc_upstream, True)
196-
# Get the updated kconfig-exclusions
197-
kcfg_excl_upstream = self.get_kconfig_excl()
198-
FileHandler.write_lines(os.path.join(self.args.build_root, SLK_KCONFIG_EXCLUDE), kcfg_excl_upstream, True)
199-
# return the kconfig-inclusions diff
200-
return self.get_downstream_kconfig_inc(kcfg_inc_upstream)
220+
# Get the updated common, amd64, arm64 configs for each file
221+
common_config, amd64_config, arm64_config = self.get_upstream_kconfig()
222+
FileHandler.write_lines(os.path.join(self.args.build_root, SLK_KCONFIG), common_config, True)
223+
FileHandler.write_lines(os.path.join(self.args.build_root, SLK_KCONFIG_AMD64), amd64_config, True)
224+
FileHandler.write_lines(os.path.join(self.args.build_root, SLK_KCONFIG_ARM64), arm64_config, True)
225+
# return the downstream kconfig diff
226+
return self.get_downstream_kconfig_diff(common_config, amd64_config, arm64_config)

platform/mellanox/integration-scripts/hwmgmt_kernel_patches.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -307,7 +307,7 @@ def construct_series_with_non_up(self):
307307
print("\n -> POST: series file updated with non-upstream patches \n{}".format("".join(Data.agg_slk_series)))
308308

309309
def get_series_diff(self):
310-
diff = difflib.unified_diff(Data.up_slk_series, Data.agg_slk_series, fromfile='a/patch/series', tofile="b/patch/series", lineterm="\n")
310+
diff = difflib.unified_diff(Data.up_slk_series, Data.agg_slk_series, fromfile='a/patches-sonic/series', tofile="b/patches-sonic/series", lineterm="\n")
311311
lines = []
312312
for line in diff:
313313
lines.append(line)

platform/mellanox/integration-scripts/tests/data/kconfig-inclusions renamed to platform/mellanox/integration-scripts/tests/data/amd64_kconfig

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,3 @@
1-
[common]
2-
CONFIG_LOG_BUF_SHIFT=20
3-
###-> mellanox_common-start
4-
###-> mellanox_common-end
5-
6-
[amd64]
71
# For Inventec d7032
82
CONFIG_GPIO_ICH=m
93
# For mitac ly1200
@@ -25,12 +19,3 @@ CONFIG_GPIOLIB=y
2519
CONFIG_OF_GPIO=y
2620
CONFIG_OF=y
2721
CONFIG_OF_MDIO=m
28-
29-
[arm64]
30-
31-
[armhf]
32-
CONFIG_EEPROM_SFF_8436=m
33-
CONFIG_EEPROM_OPTOE=m
34-
CONFIG_I2C_MUX_GPIO=m
35-
36-
[mellanox-arm64]
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[mellanox-arm64]
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
CONFIG_LOG_BUF_SHIFT=20
2+
###-> mellanox_common-start
3+
###-> mellanox_common-end
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# For Inventec d7032
2+
CONFIG_GPIO_ICH=m
3+
# For mitac ly1200
4+
CONFIG_SENSORS_MAX31790=m
5+
# For optoe
6+
CONFIG_EEPROM_OPTOE=m
7+
8+
###-> mellanox_amd64-start
9+
CONFIG_PINCTRL=y
10+
CONFIG_DW_DMAC_PCI=y
11+
CONFIG_TI_ADS1015=m
12+
CONFIG_I2C_DESIGNWARE_CORE=m
13+
CONFIG_I2C_DESIGNWARE_PCI=m
14+
CONFIG_I2C_DESIGNWARE_BAYTRAIL=n
15+
###-> mellanox_amd64-end
16+
17+
# For Cisco 8000
18+
CONFIG_PHYLIB=m
19+
CONFIG_GPIOLIB=y
20+
CONFIG_OF_GPIO=y
21+
CONFIG_OF=y
22+
CONFIG_OF_MDIO=m
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
[mellanox-arm64]
2+
CONFIG_MELLANOX_PLATFORM=y
3+
CONFIG_THERMAL_WRITABLE_TRIPS=y
4+
CONFIG_PMBUS=m
5+
CONFIG_SENSORS_PMBUS=m
6+
CONFIG_HWMON=y
7+
CONFIG_OF=y
8+
CONFIG_THERMAL_NETLINK=y
9+
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
CONFIG_LOG_BUF_SHIFT=20
2+
###-> mellanox_common-start
3+
CONFIG_THERMAL=y
4+
CONFIG_THERMAL_OF=y
5+
###-> mellanox_common-end

0 commit comments

Comments
 (0)