Re: pmspcv panic on boot on this box

From: Larry Rosenman <ler_at_lerctr.org>
Date: Fri, 31 Jul 2015 13:04:49 -0500
I'll try it when I get back to Austin tomorrow.


On July 31, 2015 1:03:43 PM Warner Losh <imp_at_bsdimp.com> wrote:

> It replaces it.
>
> Or you could just add the #if 0 bits to remove the atomic_cmpset_32 from 
> the picture entirely.
>
> All this state saving should be done in attach anyway, so it is mis-located 
> here…  But the current
> patch will tell me if my theory of the crime is correct and offer a path 
> forward...
>
> Warner
>
>
> > On Jul 31, 2015, at 11:52 AM, Larry Rosenman <ler_at_lerctr.org> wrote:
> >
> > Is this with or without Benno's patch?
> >
> >
> > On July 31, 2015 12:24:11 PM Warner Losh <imp_at_bsdimp.com> wrote:
> >
> >> Try the following patch. There’s a fundamental misunderstanding of 
> newbus that’s screwing things up…
> >>
> >> Also available at http://people.freebsd.org/~imp/patch-queue/pms
> >>
> >> The problem is that the first time through for ahd0 we’re setting 
> cardMap[0] to 5. The second time through it is  already 5, so we say ‘oh, 
> this has been probed before’ and return 2. This causes antiapi_probe() to 
> return 0, because the card has already been probed before. This is wrong on 
> so many levels, but I’ll suppress channelling my inner bde and stop here.
> >>
> >> Warner
> >>
> >> diff -r 1805eb187340 sys/dev/pms/freebsd/driver/common/lxutil.c
> >> --- a/sys/dev/pms/freebsd/driver/common/lxutil.c
> >> +++ b/sys/dev/pms/freebsd/driver/common/lxutil.c
> >> _at__at_ -757,18 +757,25 _at__at_ STATIC int agtiapi_ProbeCard( device_t d
> >> {
> >>   int idx;
> >>   static U32 cardMap[4] = { 0, 0, 0, 0 };
> >> +  u_int16_t agtiapi_vendor; // PCI vendor ID
> >>   u_int16_t agtiapi_dev; // PCI device ID
> >>   AGTIAPI_PRINTK("agtiapi_ProbeCard: start\n");
> >>
> >> +#if 0
> >>   if ( ! atomic_cmpset_32( &cardMap[thisCard], 0, 5 ) ) { // card 
> already ran
> >>     AGTIAPI_PRINTK( "We'll only ID this card once -- %d\n", thisCard );
> >>     return 2; // error return value; card already ran this function
> >>   }
> >>   else {
> >> +#else
> >> +  {
> >> +#endif
> >> +    agtiapi_vendor = pci_get_vendor( dev ); // get PCI vendor ID
> >>     agtiapi_dev = pci_get_device( dev ); // get PCI device ID
> >>     for( idx = 0; idx < COUNT(ag_card_type); idx++ )
> >>     {
> >> -      if( ag_card_type[idx].deviceId == agtiapi_dev )
> >> +      if( ag_card_type[idx].deviceId == agtiapi_dev &&
> >> +	  ag_card_type[idx].vendorId == agtiapi_vendor)
> >>       { // device ID match
> >>         memset( (void *)&agCardInfoList[ thisCard ], 0,
> >>                 sizeof(ag_card_info_t) );
> >>
> >>
> >>
> >> > On Jul 31, 2015, at 8:41 AM, Larry Rosenman <ler_at_lerctr.org> wrote:
> >> >
> >> > Please do pull it from GENERIC until this is fixed in HEAD  and RELENG/10.
> >> >
> >> >
> >> > On July 31, 2015 8:32:17 AM Glen Barber <gjb_at_FreeBSD.org> wrote:
> >> >
> >> >> On Fri, Jul 31, 2015 at 05:27:22AM -0500, Larry Rosenman wrote:
> >> >> > Ok, I made a GENERIC-NOPMS, without the device pmspcv, and adjusted 
> my custom
> >> >> > to include GENERIC-NOPMS.   And we boot (I'm typing this from a ssh 
> session
> >> >> > to the box).
> >> >> >
> >> >>
> >> >> Larry, thank you very much for testing this.
> >> >>
> >> >> Benno, for 10.2-RELEASE, I think we're going to pull pmspcv from GENERIC
> >> >> and issue an EN for the driver update when this is fixed.
> >> >>
> >> >> I think this should be pulled from GENERIC in head and stable/10 in the
> >> >> meantime, as well.
> >> >>
> >> >> Glen
> >> >>
> >> >
> >> >
> >> > _______________________________________________
> >> > freebsd-current_at_freebsd.org mailing list
> >> > http://lists.freebsd.org/mailman/listinfo/freebsd-current
> >> > To unsubscribe, send any mail to "freebsd-current-unsubscribe_at_freebsd.org"
> >>
> >
> >
>
Received on Fri Jul 31 2015 - 16:04:51 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:59 UTC