On 16.08.2024 14:06, oleksii.kuroc...@gmail.com wrote: > On Tue, 2024-08-13 at 11:34 +0200, Jan Beulich wrote: >>> >>> +static unsigned long sbi_spec_version = SBI_SPEC_VERSION_DEFAULT; >>> +static unsigned long sbi_fw_id, sbi_fw_version; >> >> __ro_after_init for perhaps all three of them? >> >> Considering SBI_SPEC_VERSION_{MAJOR,MINOR}_MASK, at least the first >> of them also doesn't need to be unsigned long, but could be unsigned >> int? > > sbi_spec_version can be really unsigned int as according to the spec > only 32 bits are used: > ``` > struct sbiret sbi_get_spec_version(void); > Returns the current SBI specification version. This function must > always succeed. The minor number > of the SBI specification is encoded in the low 24 bits, with the > major number encoded in the next 7 > bits. Bit 31 must be 0 and is reserved for future expansion. > ``` > > For sbi_fw_id, sbi_fw_version it is not mentioned the same thing, so we > can just assume ( despite of the fact that now this values are very > small and it is unlikely to be bigger the UINT_MAX ) that it will be > always fit in uint32_t. > > But I think it would be better to leave unsigned long for everyone as > according to the specification this functions returns sbiret structure > which consist of 2 longs ( error and value ) and it is good idea to > follow the specification.
Okay with me (for these two) then. Jan