mirror of
https://github.com/torvalds/linux.git
synced 2024-11-11 14:42:24 +00:00
2fe0e8769d
Add test case of two fragments updating the same property. After adding the test case, the system hangs at end of boot, after after slub stack dumps from kfree() in crypto modprobe code. Multiple overlay fragments adding, modifying, or deleting the same property is not supported. Add check to detect the attempt and fail the overlay apply. Before this patch, the first fragment error would terminate processing. Allow fragment checking to proceed and report all of the fragment errors before terminating the overlay apply. This is not a hot path, thus not a performance issue (the error is not transient and requires fixing the overlay before attempting to apply it again). After applying this patch, the devicetree unittest messages will include: OF: overlay: ERROR: multiple fragments add, update, and/or delete property /testcase-data-2/substation@100/motor-1/rpm_avail ... ### dt-test ### end of unittest - 212 passed, 0 failed The check to detect two fragments updating the same property is folded into the patch that created the test case to maintain bisectability. Tested-by: Alan Tull <atull@kernel.org> Signed-off-by: Frank Rowand <frank.rowand@sony.com>
94 lines
1.9 KiB
Plaintext
94 lines
1.9 KiB
Plaintext
// SPDX-License-Identifier: GPL-2.0
|
|
/dts-v1/;
|
|
/plugin/;
|
|
|
|
/*
|
|
* Base device tree that overlays will be applied against.
|
|
*
|
|
* Do not add any properties in node "/".
|
|
* Do not add any nodes other than "/testcase-data-2" in node "/".
|
|
* Do not add anything that would result in dtc creating node "/__fixups__".
|
|
* dtc will create nodes "/__symbols__" and "/__local_fixups__".
|
|
*/
|
|
|
|
/ {
|
|
testcase-data-2 {
|
|
#address-cells = <1>;
|
|
#size-cells = <1>;
|
|
|
|
electric_1: substation@100 {
|
|
compatible = "ot,big-volts-control";
|
|
reg = < 0x00000100 0x100 >;
|
|
status = "disabled";
|
|
|
|
hvac_1: hvac-medium-1 {
|
|
compatible = "ot,hvac-medium";
|
|
heat-range = < 50 75 >;
|
|
cool-range = < 60 80 >;
|
|
};
|
|
|
|
spin_ctrl_1: motor-1 {
|
|
compatible = "ot,ferris-wheel-motor";
|
|
spin = "clockwise";
|
|
rpm_avail = < 50 >;
|
|
};
|
|
|
|
spin_ctrl_2: motor-8 {
|
|
compatible = "ot,roller-coaster-motor";
|
|
};
|
|
};
|
|
|
|
rides_1: fairway-1 {
|
|
#address-cells = <1>;
|
|
#size-cells = <1>;
|
|
compatible = "ot,rides";
|
|
status = "disabled";
|
|
orientation = < 127 >;
|
|
|
|
ride@100 {
|
|
#address-cells = <1>;
|
|
#size-cells = <1>;
|
|
compatible = "ot,roller-coaster";
|
|
reg = < 0x00000100 0x100 >;
|
|
hvac-provider = < &hvac_1 >;
|
|
hvac-thermostat = < 29 > ;
|
|
hvac-zones = < 14 >;
|
|
hvac-zone-names = "operator";
|
|
spin-controller = < &spin_ctrl_2 5 &spin_ctrl_2 7 >;
|
|
spin-controller-names = "track_1", "track_2";
|
|
queues = < 2 >;
|
|
|
|
track@30 {
|
|
reg = < 0x00000030 0x10 >;
|
|
};
|
|
|
|
track@40 {
|
|
reg = < 0x00000040 0x10 >;
|
|
};
|
|
|
|
};
|
|
};
|
|
|
|
lights_1: lights@30000 {
|
|
compatible = "ot,work-lights";
|
|
reg = < 0x00030000 0x1000 >;
|
|
status = "disabled";
|
|
};
|
|
|
|
lights_2: lights@40000 {
|
|
compatible = "ot,show-lights";
|
|
reg = < 0x00040000 0x1000 >;
|
|
status = "disabled";
|
|
rate = < 13 138 >;
|
|
};
|
|
|
|
retail_1: vending@50000 {
|
|
reg = < 0x00050000 0x1000 >;
|
|
compatible = "ot,tickets";
|
|
status = "disabled";
|
|
};
|
|
|
|
};
|
|
};
|
|
|