On Tue, Jul 22, 2025 at 03:50:01PM +0200, Andrew Lunn wrote: > On Tue, Jul 22, 2025 at 02:45:30PM +0800, Yibo Dong wrote: > > On Mon, Jul 21, 2025 at 05:43:41PM +0200, Andrew Lunn wrote: > > > > #define MAX_VF_NUM (8) > > > > > > > + hw->max_vfs = 7; > > > > > > ??? > > > > This is mistake, max vfs is 7. 8 is '7 vfs + 1 pf'. > > So it seems like you need to add a new #define for MAX_FUNCS_NUM, and > set MAX_VF_NUM to 7. And then actually use MAX_VP_NUM. When reviewing > your own code, seeing the number 7, not a define, should of been a > warning, something is wrong.... > Got it, I'll update this. > > > > +static int mucse_obtain_mbx_lock_pf(struct mucse_hw *hw, enum MBX_ID mbx_id) > > > > +{ > > > > + struct mucse_mbx_info *mbx = &hw->mbx; > > > > + int try_cnt = 5000, ret; > > > > + u32 reg; > > > > + > > > > + reg = (mbx_id == MBX_FW) ? PF2FW_MBOX_CTRL(mbx) : > > > > + PF2VF_MBOX_CTRL(mbx, mbx_id); > > > > + while (try_cnt-- > 0) { > > > > + /* Take ownership of the buffer */ > > > > + mbx_wr32(hw, reg, MBOX_PF_HOLD); > > > > + /* force write back before check */ > > > > + wmb(); > > > > + if (mbx_rd32(hw, reg) & MBOX_PF_HOLD) > > > > + return 0; > > > > + udelay(100); > > > > + } > > > > + return ret; > > > > > > I've not compiled this, but isn't ret uninitialized here? I would also > > > expect it to return -ETIMEDOUT? > > > > > > Andrew > > > > > > > Yes, ret is uninitialized. I will fix this. > > Did the compiler give a warning? Code should be warning free. We also > expect networking code to be W=1 warning free. > > Andrew > I can get this warning with 'make CC=clang-16 W=1' now. I did't make with clang before, I'll add this step for future patches. Thanks for your feedback.