device tree overlay strange persistence using rcn's 8.4_console_4/7/2016 + 4.4.9-bone-rt-r10

I’m seeing some strange persistent/erroneous behavior with a device tree overlay that I wanted to ask about.

Specifically, I’m seeing startup errors in ‘dmesg’ which reference symbols in a device tree overlay (.dtbo) that no longer exist.

[ 11.591461] pinctrl-single 44e10800.pinmux: bad data for mux MYOVERLAY_pru
[ 11.671379] pinctrl-single 44e10800.pinmux: no pins entries for MYOVERLAY_pru

I’m using image:
bone-debian-8.4-console-armhf-2016-04-07-2gb.img.xz

(With some packages removed)

I’m using kernel:
4.4.9-bone-rt-r10

The errors originated from an old *.dtc file that did indeed contain errors (no pins defined for a mux called MYOVERLAY_pru). So, I simplified it, created a ‘good’ version of the *dtc, which compiles and loads properly. The new overlay doesn’t contain ANY references to MYOVERLAY_pru, and yet, I’m still seeing errors referencing it on reboot (when the part is enabled in /boot/uEnv.txt), when I type ‘dmesg’

Also, if it is helpful, I’ve found that the directory below seems to appear with the error messages.

/sys/firmware/devicetree/base/ocp/l4_wkup@44c00000/scm@210000/pinmux@800/MYOVERLAY_pru

I’ve tried disabling the part in /boot/uEnv.txt, and rebooting.
I’ve tried doing a full halt, then disconnecting power for several minutes, then rebooting.

I can make the errors go away if I disable the part in /boot/uEnv.txt, but, I actually want the (correct) overlay to load (with no errors) upon startup.

Does anyone have any idea what is going on here? How can a symbol from a device tree overlay persist beyond its own deletion/de-install? Is something being saved, but then not cleared from persistent memory?

Thanks for any insights you might have,

ST

PS. I’ve attached the two *dtc files in question below

----------------------------------- BELOW IS THE ORIG DTC WHICH CAUSED THE ERROR

/dts-v1/;

/ {
compatible = “ti,beaglebone-black”;
part-number = “MY_OVERLAY”;
version = “00A0”;
exclusive-use = “P8.12”, “pruss”, “pru0”;

fragment@0 {
target = <0xdeadbeef>;

overlay {

MY_OVERLAY_gpio {
pinctrl-single,pins = <0x30 0x7>;
linux,phandle = <0x2>;
phandle = <0x2>;
};

MY_OVERLAY_pru {
pinctrl-single,pins; // <----- NOTE, THE LACK OF PIN DEFS HERE CAUSES THE ERROR MESSAGE(I think)
linux,phandle = <0x1>;
phandle = <0x1>;
};
};
};

fragment@1 {
target = <0xdeadbeef>;

overlay {
status = “okay”;
pinctrl-names = “default”;
pinctrl-0 = <0x1>;
};
};

fragment@2 {
target = <0xdeadbeef>;

overlay {

gpio_helper {
compatible = “gpio-of-helper”;
status = “okay”;
pinctrl-names = “default”;
pinctrl-0 = <0x2>;
};
};
};

symbols {
my_overlay_gpio = “/fragment@0/overlay/MY_OVERLAY_gpio”;
my_overlay_pru = “/fragment@0/overlay/MY_OVERLAY_pru”;
};

local_fixups {

fragment@1 {

overlay {
pinctrl-0 = <0x0>;
};
};

fragment@2 {

overlay {

gpio_helper {
pinctrl-0 = <0x0>;
};
};
};
};

fixups {
am33xx_pinmux = “/fragment@0:target:0”;
pruss = “/fragment@1:target:0”;
ocp = “/fragment@2:target:0”;
};
};

----------------------------------- BELOW IS THE FIXED DTC

/dts-v1/;

/ {
compatible = “ti,beaglebone-black”;
part-number = “MY_OVERLAY”;
version = “00A0”;
exclusive-use = “P8.12”;

fragment@0 {
target = <0xdeadbeef>;

overlay {

MY_OVERLAY_gpio {
pinctrl-single,pins = <0x30 0x7>;
linux,phandle = <0x1>;
phandle = <0x1>;
};
};
};

fragment@1 {
target = <0xdeadbeef>;

overlay {

gpio_helper {
compatible = “gpio-of-helper”;
status = “okay”;
pinctrl-names = “default”;
pinctrl-0 = <0x1>;
};
};
};

symbols {
my_overlay_gpio = “/fragment@0/overlay/MY_OVERLAY_gpio”;
};

local_fixups {

fragment@1 {

overlay {

gpio_helper {
pinctrl-0 = <0x0>;
};
};
};
};

fixups {
am33xx_pinmux = “/fragment@0:target:0”;
ocp = “/fragment@1:target:0”;
};
};