Fan Ni wrote: > On Mon, Apr 14, 2025 at 03:19:50PM +0100, Jonathan Cameron wrote: > > On Sun, 13 Apr 2025 17:52:09 -0500 > > Ira Weiny <ira.we...@intel.com> wrote:
[snip] > > > > > + > > > +static bool cxl_verify_dcd_cmds(struct cxl_memdev_state *mds, unsigned > > > long *cmds_seen) > > > > It's not immediately obvious to me what the right behavior > > from something called cxl_verify_dcd_cmds() is. A comment might help with > > that. > > > > I think all it does right now is check if any bits are set. In my head > > it was going to check that all bits needed for a useful implementation were > > set. I did have to go check what a 'logical and' of a bitmap was defined as > > because that bit of the bitmap_and() return value wasn't obvious to me > > either! > > The code only checks if any DCD command (48xx) is supported, if any is > set, it will set "dcd_supported". > As you mentioned, it seems we should check all the related commands are > supported, otherwise it is not valid implementation. > > Fan > > > > > > > +{ > > > + DECLARE_BITMAP(all_cmds, CXL_DCD_ENABLED_MAX); > > > + DECLARE_BITMAP(dst, CXL_DCD_ENABLED_MAX); > > > + > > > + bitmap_fill(all_cmds, CXL_DCD_ENABLED_MAX); > > > + return bitmap_and(dst, cmds_seen, all_cmds, CXL_DCD_ENABLED_MAX); Yea... so this should read: ... bitmap_and(dst, cmds_seen, all_cmds, CXL_DCD_ENABLED_MAX); return bitmap_equal(dst, all_cmds, CXL_DCD_ENABLED_MAX); ... Of course if a device has set any of these commands true it better have set them all. Otherwise the device is broken and it will fail in bad ways. But I agree with both of you that this is much better and explicit that something went wrong. A dev_dbg() might be in order to debug such an issue. Ira [snip]