于 2020年11月23日 GMT+08:00 下午7:15:12, Maxime Ripard <maxime@xxxxxxxxxx> 写到: >Hi! > >On Fri, Nov 20, 2020 at 08:51:48PM -0600, Samuel Holland wrote: >> On 11/20/20 5:30 PM, Icenowy Zheng wrote: >> >>>>>>> +/ { >> >>>>>>> + model = "PineTab Developer Sample"; >> >>>>>>> + compatible = "pine64,pinetab-dev", "allwinner,sun50i-a64"; >> >>>>>>> +}; >> >>>>>> >> >>>>>> Changing the DT and the compatible half-way through it isn't >ok. Please >> >>>>>> add a new DT with the newer revision like we did for the >pinephone >> >>>>> >> >>>>> We did this on Pine H64. >> >>>> >> >>>> What are you referring to? I couldn't find a commit where we did >what >> >>>> you suggested in that patch to the pine H64. >> >>> >> >>> Oh the situation is complex. On Pine H64, we didn't specify >anything at >> >>> start (which is the same here), the DT is originally >version-neutral >> >>> but then transitioned to model B, then reverted to model A. Here >the DT is always >> >>> for the sample. >> >>> >> >>> However, for Pine H64 there's model A/B names, but for PineTab >there's no >> >>> any samples that are sold, thus except who got the samples, all >PineTab >> >>> owners simply owns a "PineTab", not a "PineTab xxx version". >> >> >> >> It's fairly simple really, we can't really predict the future, so >any DT >> >> submitted is for the current version of whatever board there is. >This is >> >> I don't think that was the intention at all. The DT was submitted for >a >> future product, whatever that future product ends up being at the >time >> of its release. Since there are necessarily no users until the >product >> ships, there is no chance of breaking users by modifying the DT. > >There was no indication of that in the commit though > >> >> what we (somewhat messily) did for the PineH64, for the pinephone, >or >> >> really any other board that has several revisions >> >> Surely a non-public prototype doesn't count as a separate revision! >This >> sort of policy strongly discourages ever shipping a board with >> out-of-the-box mainline Linux support. Because if there any hardware >> bugs fixed between initial upstreaming and production, the >manufacture >> must come up with a new DT name. >> >> This is hostile to the users as well, because the "canonical" DT name >no >> longer matches the "canonical" (read: the only one ever available) >> version of the hardware. >> >> Do you want manufacturers to submit their initial board DT as >> "$BOARD-prototype.dts", just in case they have to make a change >before >> production? And only after the board is shipped (with out-of-tree >> patches, of course, to use $BOARD.dts, since the shipped board is >*not* >> the prototype) submit a "$BOARD.dts" to mainline? >> >> Maxime, can you clarify specifically what the line is where a device >> tree is "locked down" and further changes to the hardware require a >new >> name? First sample leaves the factory? $NUMBER units produced? First >> sold to the public for money? > >The first board that is shipped to a user. From the wiki, the version >supported here (I guess?) has been shipped to around 100 people, so it >doesn't really qualify for the "non-public prototype". We still have to >support these users, whether we like it or not. > >> Without some guidance, or a change in policy, this problem is going >to >> keep coming up again and again. > >There's a few things that are interleaved here. First, there's two hard >rules: never change the DT name and never change the compatible of a >board. > >The former would break any build system, boot script or documentation, >and the latter would break the DT compatibility. > >Aside from this, things get a bit blurrier since it's mostly about the >intent. I'm fine with having a DT for a non-public prototype if it's >clear from day one that it is. In this particular case, the DT just >stated that support for the pinetab was added. I guess anyone would >make >the assumption without any context that this would be for the (or a) >final design. > >Finally, I'd also advise against submitting the parts that are still >not >finalized though, because this is also fairly bad for the users. Let's >take the current situation as the example: from what I understand, the >screen changed half-way through the process, and the first one was >upstreamed. This means that any user that would use a kernel with that >bugfix would have the display working, while rolling back to 5.9 would >break the display, even though everyone claimed it was supported >out-of-the-box in mainline. This is a worse situation than not >supporting the display in the first place here. > >> You'll note that so far it has mostly affected Pine devices, and I >don't >> think that's because they make more board revisions than other >> manufacturers. > >Yes definitely. Pine devices may be worse though because of their >policy >of making their prototypes public. I guess most of the issues we had >also were due to poor communication: context on what were the Pine >intentions were missing, and thus we couldn't catch things that turned >out to be bad later on during review. > >> It's because they're actively involved in getting their >> boards supported upstream. For other manufacturers, it's some user >> sending in a device tree months after the hardware ships to the >public >> -- of course the hardware is more stable at that point. > >I mean, it's not black and white either. One could very well send the >DT >once the final design is done and that would still be upstreamed way >before reaching the first user. > >> I think Pine's behavior is something we want to encourage, not >> penalize. > >For the DT in particular, yes > >> > Okay. But I'm not satisfied with a non-public sample occupies >> > the pinetab name. Is rename it to pinetab-dev and add a >> > pinetab-retail okay? >> >> To me, naming the production version anything but "pinetab" isn't >> satisfying either. > >I understand where you're coming from, but the point I was making my >previous mail is precisely that it's not really possible. > >You want to name the early adopter version _the_ production version. >Let's assume the hardware changes again between the early adopter and >mass-production version. Which one will be _the_ production version? >The >early-adopter or the mass-produced one? > >There's really no good answer here, and both would suck in their own >way. The only way to deal with this is to simply avoid defining one >version as the one true board, and just loading the proper DT in u-boot >based on whatever clue we have of the hardware revision. Then will it be okay to rename current pinetab DT to pinetab-sample and then introduce new DTs all with suffixes? > >Maxime