Messages in this thread | | | Date | Sat, 6 Jun 2020 13:09:10 -0500 | From | Segher Boessenkool <> | Subject | Re: [PATCH v10 6/6] powerpc/papr_scm: Implement support for PAPR_PDSM_HEALTH |
| |
On Sat, Jun 06, 2020 at 06:04:11PM +0530, Vaibhav Jain wrote: > >> + /* update health struct with various flags derived from health bitmap */ > >> + health = (struct nd_papr_pdsm_health) { > >> + .dimm_unarmed = p->health_bitmap & PAPR_PMEM_UNARMED_MASK, > >> + .dimm_bad_shutdown = p->health_bitmap & PAPR_PMEM_BAD_SHUTDOWN_MASK, > >> + .dimm_bad_restore = p->health_bitmap & PAPR_PMEM_BAD_RESTORE_MASK, > >> + .dimm_encrypted = p->health_bitmap & PAPR_PMEM_ENCRYPTED, > >> + .dimm_locked = p->health_bitmap & PAPR_PMEM_SCRUBBED_AND_LOCKED, > >> + .dimm_scrubbed = p->health_bitmap & PAPR_PMEM_SCRUBBED_AND_LOCKED, > > > > Are you sure these work? These are not assignments to a bool so I don't think > > gcc will do what you want here. > Yeah, somehow this slipped by and didnt show up in my tests. I checked > the assembly dump and seems GCC was silently skipping initializing these > fields without making any noise.
It's not "skipping" that, it initialises the field to 0, just like your code said it should :-)
If you think GCC should warn for this, please open a PR? It is *normal* for bit-fields to be truncated from what is assigned to it, but maybe we could warn for it in the 1-bit case (we currently don't seem to, even when the bit-field type is _Bool).
Thanks,
Segher
| |