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" >> > >
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:59 UTC