On Tue, 10 Apr 2018, Jonathan Gray wrote:

> On Sat, Apr 07, 2018 at 01:35:31PM +0200, Stefan Fritsch wrote:
> > On Fri, 6 Apr 2018, Jonathan Gray wrote:
> > 
> > > On Thu, Apr 05, 2018 at 09:57:23PM +0200, Stefan Fritsch wrote:
> > > > Add another magic 1ms delay that seems to help with some remaining
> > > > issues on an HP elitebook 820 G3 with i219LM. A printf() at the same
> > > > place helps, too.
> > > 
> > > Could you explain what the problem here was and why this place was
> > > chosen to add the delay?
> > 
> > The problems fixed by patches 1-6 were that there were these kinds of 
> > errors
> > 
> > em0: Hardware Initialization Failed
> > em0: Unable to initialize the hardware
> > 
> > either during em_attach (in this case em0 would simply not be available in 
> > ifconfig) or during ifconfig up. The problems only appeared if there was 
> > no link (or no cable plugged in) during boot or during resume.
> > 
> > The fixes 1 to 5 made the problem appear much less often, but it still 
> > appeared sometimes. I had some printfs added and I have never seen the 
> > problem with the printf present. In the end I traced the "fix" to the 
> > single printf at this exact location and I replaced it with a delay.
> > 
> > We added Patch 6 (the E1000_TARC0_CB_MULTIQ_2_REQ erratum) later, to fix 
> > different problems with watchdog timeouts that were only recoverable by a 
> > reboot, when pulling the cable or when the link was flaky.
> 
> If you have the HP machine that triggers the problem it should be possible
> to find which register write the delay is needed after?

That should be possible, yes. I don't know when I will have the time for 
that, though. 

> 
> > 
> > > 
> > > > ---
> > > >  sys/dev/pci/if_em_hw.c | 2 ++
> > > >  1 file changed, 2 insertions(+)
> > > > 
> > > > diff --git sys/dev/pci/if_em_hw.c sys/dev/pci/if_em_hw.c
> > > > index 7709a4c5805..d122e727875 100644
> > > > --- sys/dev/pci/if_em_hw.c
> > > > +++ sys/dev/pci/if_em_hw.c
> > > > @@ -1493,6 +1493,8 @@ em_init_hw(struct em_hw *hw)
> > > >         /* Set the media type and TBI compatibility */
> > > >         em_set_media_type(hw);
> > > >  
> > > > +       /* Magic delay that improves problems with i219LM on HP 
> > > > Elitebook */
> > > > +       msec_delay(1);
> > > >         /* Must be called after em_set_media_type because media_type is 
> > > > used */
> > > >         em_initialize_hardware_bits(hw);
> > > >  
> > > > -- 
> > > > 2.13.0
> > > > 
> > > 
> > 
> 
> 

Reply via email to