Re: [PATCH 1/1] PCI: Cleanup link activation wait logic

From: Maciej W. Rozycki
Date: Fri Feb 09 2024 - 20:50:31 EST

On Fri, 2 Feb 2024, Ilpo Järvinen wrote:

> > You change the logic here in that the second conditional isn't run if the
> > first has not. This is wrong, unclamping is not supposed to rely on LBMS.
> > It is supposed to be always run and any failure has to be reported too, as
> > a retraining error. I'll send an update according to what I have outlined
> > before then, with some testing done first.
> Oh I see now, I'm sorry, I didn't read all the way to the last paragraph
> of the commit message because the earlier one in the commit message hinted
> the restriction is removed afterwards so I thought it was only linked to
> the first part of the quirk.

No worries. I have submitted the changes now:

Unfortunately due to a sudden hardware failure I wasn't able to do any
non-trivial verification, as explained in the cover letter. I'll try to
get back to it as soon as reasonably possible, hopefully next month.

> > I think it has to be a separate change, as a fix to what I can see is an
> > issue with a three-way-merge done with commit 1abb47390350 ("Merge branch
> > 'pci/enumeration'"); surely a bool result wasn't supposed to be assigned
> > to an int variable carrying an error code.
> >
> > Either or both changes may have to be backported independently.
> But can it be? Won't the intermediate state cause more breakage? (although
> that obviously can only hit some very unfortunate bisecter so perhaps not
> a big deal because one would need many holes to align, the biggest being
> the link has to fail training which is rare to begin with).

I decided to do it differently after all, still with two changes. There
doesn't have to be any intermediate state, and returning failure where no
retraining has been done is no different from the case where a failure was
caused by the lack of hardware features required, such as link active
reporting, so if callers work without this update, then so they will with
it in place (i.e. no regression).