From mboxrd@z Thu Jan 1 00:00:00 1970 Date: Tue, 3 Apr 2018 18:52:28 +0000 From: "Brian L. Stuart" To: <9fans@9fans.net> Message-ID: <1092190499.1253166.1522781548163@mail.yahoo.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit References: <1092190499.1253166.1522781548163.ref@mail.yahoo.com> Subject: [9fans] Plan9 on Pi 3B+ Topicbox-Message-UUID: d36f5fee-ead9-11e9-9d60-3106f5b1d025 Has anyone tried Plan 9 on the new Pi 3B+? I've run into something that confuses me a bit. First, it seems you need the new version of start_cd.elf to bring up the 3B+. However, with that, the kernel throws a lock loop error. In tracking down the loop, it happens in startcpus() in archbcm2.c. The code here looks like: for(i = 0; i < ncpu; i++) lock(&startlock[i]); cachedwbse(startlock, sizeof startlock); for(i = 1; i < ncpu; i++) { if(startcpu(i) < 0) return i; lock(&startlock[i]); unlock(&startlock[i]); } So we grab a lock on all the CPUs, then drop into a second loop where we start CPUs 1 to n. But in that loop we grab the lock again and then immediately unlock it. This is where the lock loop happens. Everything seems to continue to be happy on both a 2 and a 3B+ if I comment out the lock in the second loop. But what is the rationale for the lock in the second loop? Was there a reason for putting it there, or was it an oversight that wasn't exposed until the new boot code? Thanks, BLS