<matrixBuild _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.SCMTrigger$SCMTriggerCause'><shortDescription>Started by an SCM change</shortDescription></cause></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>EMAIL_NOTIFICATIONS</name><value>jenkins-notifications@lists.osmocom.org laforge@gnumonks.org ewild@sysmocom.de</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>10584</buildingDurationMillis><executingTimeMillis>10584</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>7123</waitingDurationMillis><waitingTimeMillis>7123</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><originmaster _class='hudson.plugins.git.util.Build'><buildNumber>2647</buildNumber><marked><SHA1>22209f9a2dfe45642722c25a5aa00629c41ef710</SHA1><branch><SHA1>22209f9a2dfe45642722c25a5aa00629c41ef710</SHA1><name>origin/master</name></branch></marked><revision><SHA1>22209f9a2dfe45642722c25a5aa00629c41ef710</SHA1><branch><SHA1>22209f9a2dfe45642722c25a5aa00629c41ef710</SHA1><name>origin/master</name></branch></revision></originmaster><refsremotesoriginmaster _class='hudson.plugins.git.util.Build'><buildNumber>1459</buildNumber><marked><SHA1>3761545fcf173ea975494dafe4516e0f4c669081</SHA1><branch><SHA1>3761545fcf173ea975494dafe4516e0f4c669081</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>3761545fcf173ea975494dafe4516e0f4c669081</SHA1><branch><SHA1>3761545fcf173ea975494dafe4516e0f4c669081</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>22209f9a2dfe45642722c25a5aa00629c41ef710</SHA1><branch><SHA1>22209f9a2dfe45642722c25a5aa00629c41ef710</SHA1><name>origin/master</name></branch></lastBuiltRevision><remoteUrl>https://gerrit.osmocom.org/osmo-asf4-dfu</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#2647</displayName><duration>10584</duration><estimatedDuration>8029</estimatedDuration><fullDisplayName>master-osmo-asf4-dfu #2647</fullDisplayName><id>2647</id><inProgress>false</inProgress><keepLog>false</keepLog><number>2647</number><queueId>57602</queueId><result>SUCCESS</result><timestamp>1773346508146</timestamp><url>https://jenkins.osmocom.org/jenkins/view/no-generated/job/master-osmo-asf4-dfu/2647/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>usb/class/dfu/device/dfudf.c</affectedPath><commitId>dd7bde04a38d65ce352f126faf4ec63f62ed6625</commitId><timestamp>1773226823000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/lynxis</absoluteUrl><fullName>lynxis</fullName></author><authorEmail>lynxis@fe80.eu</authorEmail><comment>dfu: MANIFEST_SYNC: stay in MANIFEST_SYNC when manifestationIntolerant &amp; completed

In theory a device which is manifestintolerant and completed the manifestation should
not reach MANIFEST_SYNC again.

Remove the state transistion to WAIT-RESET and stay in the current state and
wait for the main loop to change the state is safer.

Change-Id: I8c34a18e2336731126a8c01070d86e2547578e3d
</comment><date>2026-03-11 12:00:23 +0100</date><id>dd7bde04a38d65ce352f126faf4ec63f62ed6625</id><msg>dfu: MANIFEST_SYNC: stay in MANIFEST_SYNC when manifestationIntolerant &amp;</msg><path><editType>edit</editType><file>usb/class/dfu/device/dfudf.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>usb_start.c</affectedPath><commitId>0ec23458edfd7480eb190c71e8cd70b5e8f09e02</commitId><timestamp>1773226823000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/lynxis</absoluteUrl><fullName>lynxis</fullName></author><authorEmail>lynxis@fe80.eu</authorEmail><comment>dfu: protect USB_DFU_STATE_DFU_MANIFEST by a critical section

In the MANIFEST state, the IRQ won't move the state, but
to prevent incosistency between dfu_manifestation_complete &amp;
dfu_state, use a critical section.

Change-Id: Idf5fb7d55b4051ba7e235dfa409a4de18a8f208c
</comment><date>2026-03-11 12:00:23 +0100</date><id>0ec23458edfd7480eb190c71e8cd70b5e8f09e02</id><msg>dfu: protect USB_DFU_STATE_DFU_MANIFEST by a critical section</msg><path><editType>edit</editType><file>usb_start.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>usb_flash_main.c</affectedPath><commitId>0122e647cadc04245ae75f05be6403b413d551d9</commitId><timestamp>1773226823000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/lynxis</absoluteUrl><fullName>lynxis</fullName></author><authorEmail>lynxis@fe80.eu</authorEmail><comment>Replace snprintf() to free 4 kb

Change-Id: Ide644648bda86d4ae77a6713d1e140a4b78ba835
</comment><date>2026-03-11 12:00:23 +0100</date><id>0122e647cadc04245ae75f05be6403b413d551d9</id><msg>Replace snprintf() to free 4 kb</msg><path><editType>edit</editType><file>usb_flash_main.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>usb_start.c</affectedPath><affectedPath>usb/class/dfu/device/dfudf.c</affectedPath><affectedPath>usb/class/dfu/device/dfudf.h</affectedPath><commitId>6b44e8f58537f45a3810979d6b14bdd2e23b8363</commitId><timestamp>1773229266000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/lynxis</absoluteUrl><fullName>lynxis</fullName></author><authorEmail>lynxis@fe80.eu</authorEmail><comment>dfu: download: flash the first block in manifest phase

To prevent half flashed applications, erase the first page
when dfu downloading starts and save the first block for later.
In manifest stage, flash the first block.
If the first 4 byte are 0xffffffff, the board won't boot
into application and go into the dfu bootloader.

Change-Id: I894f3ee71587ccb287e92d7025039954991c631f
</comment><date>2026-03-11 11:41:06 +0000</date><id>6b44e8f58537f45a3810979d6b14bdd2e23b8363</id><msg>dfu: download: flash the first block in manifest phase</msg><path><editType>edit</editType><file>usb_start.c</file></path><path><editType>edit</editType><file>usb/class/dfu/device/dfudf.h</file></path><path><editType>edit</editType><file>usb/class/dfu/device/dfudf.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>usb_start.c</affectedPath><commitId>7d3c3b8b3b4f8fbc1cdff23f531e2c6db8cd4af0</commitId><timestamp>1773230490000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/lynxis</absoluteUrl><fullName>lynxis</fullName></author><authorEmail>lynxis@fe80.eu</authorEmail><comment>dfu: flash: protect parsing of rc of flashing

Otherwise it is not guaranteed that both dfu_status and dfu_state
are in sync when the IRQ handler is running.

Change-Id: Ifc0d56d779ec31382855d6c367478104bc04e1e7
</comment><date>2026-03-11 12:01:30 +0000</date><id>7d3c3b8b3b4f8fbc1cdff23f531e2c6db8cd4af0</id><msg>dfu: flash: protect parsing of rc of flashing</msg><path><editType>edit</editType><file>usb_start.c</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>usb/class/dfu/device/dfudf.c</affectedPath><affectedPath>usb/class/dfu/device/dfudf.h</affectedPath><commitId>c56c1c21a8378cee3476bd824c4249531fbe3f09</commitId><timestamp>1773230492000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/lynxis</absoluteUrl><fullName>lynxis</fullName></author><authorEmail>lynxis@fe80.eu</authorEmail><comment>dfu: download: make variables between IRQ and main loop volatile

Both are access by IRQ and mainloop and are written by the IRQ handler.

Change-Id: Ic3dccd77eff7feb164f9f07047680eef3f7c2516
</comment><date>2026-03-11 12:01:32 +0000</date><id>c56c1c21a8378cee3476bd824c4249531fbe3f09</id><msg>dfu: download: make variables between IRQ and main loop volatile</msg><path><editType>edit</editType><file>usb/class/dfu/device/dfudf.c</file></path><path><editType>edit</editType><file>usb/class/dfu/device/dfudf.h</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>usb/class/dfu/device/dfudf.c</affectedPath><commitId>22209f9a2dfe45642722c25a5aa00629c41ef710</commitId><timestamp>1773241074000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/lynxis</absoluteUrl><fullName>lynxis</fullName></author><authorEmail>lynxis@fe80.eu</authorEmail><comment>dfu: download: align download data buffer

The download data buffer is given to the usb stack.
Ensure the data buffer is dma capable to prevent an
additional memcpy() by the usb hal.

Change-Id: I01191a125aa62c2198e38d5e5fcd27d4e421c62e
</comment><date>2026-03-11 15:57:54 +0100</date><id>22209f9a2dfe45642722c25a5aa00629c41ef710</id><msg>dfu: download: align download data buffer</msg><path><editType>edit</editType><file>usb/class/dfu/device/dfudf.c</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/lynxis</absoluteUrl><fullName>lynxis</fullName></culprit><run><number>2647</number><url>https://jenkins.osmocom.org/jenkins/view/no-generated/job/master-osmo-asf4-dfu/a1=default,a2=default,a3=default,a4=default,label=osmocom-master/2647/</url></run></matrixBuild>