On Fri Nov 14, 2025 at 10:54 AM JST, John Hubbard wrote:
> On 11/13/25 12:03 AM, Alexandre Courbot wrote:
>> On Wed Nov 12, 2025 at 1:30 PM JST, John Hubbard wrote:
> ...
>>> impl NV_PMC_BOOT_0 {
>>> - /// Combines `architecture_0` and `architecture_1` to obtain the
>>> architecture of the chip.
>>> - pub(crate) fn architecture(self) -> Result<Architecture> {
>>> - Architecture::try_from(
>>> - self.architecture_0() | (self.architecture_1() <<
>>> Self::ARCHITECTURE_0_RANGE.len()),
>>> - )
>>> + pub(crate) fn is_older_than_fermi(self) -> bool {
>>> + // From https://github.com/NVIDIA/open-gpu-doc/tree/master/manuals
>>> :
>>> + const NV_PMC_BOOT_0_ARCHITECTURE_GF100: u8 = 0xc;
>>> +
>>> + // Older chips left arch1 zeroed out. That, combined with an arch0
>>> value that is less than
>>> + // GF100, means "older than Fermi".
>>> + self.architecture_1() == 0 && self.architecture_0() <
>>> NV_PMC_BOOT_0_ARCHITECTURE_GF100
>>
>> We could also keep `architecture` (making it private) and just test for
>> `self.architecture < NV_PMC_BOOT_0_ARCHITECTURE_GF100`. John, I can do
>> that when applying the series if you think that makes sense.
>>
>> Considering that the series has been extensively reviewed during the
>> previous iterations, I think we can safely apply it for 6.19, so will
>> proceed once I have an answer.
>
> Hi Alex,
>
> It turns out that this doesn't work well, because architecture()
> returns an Architecture, not a u8, and then we have to map it back
> and the whole things looks a lot worse: complexity on the screen
> that serves no purpose.
>
> After looking at several approaches, I've come full circle back to
> what this patch has.
Ah right, we would need to add `Fermi` to `Architecture`, which would
now include some architecture we don't support...
In the light of this I agree your original approach makes the most
sense - thanks for checking it out!