I'll try it when I get back to Austin tomorrow.
On July 31, 2015 1:03:43 PM Warner Losh <[email protected]> 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 <[email protected]> wrote:
>
> Is this with or without Benno's patch?
>
>
> On July 31, 2015 12:24:11 PM Warner Losh <[email protected]> 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
>> @@ -757,18 +757,25 @@ 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 <[email protected]> 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 <[email protected]> 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
>> >>
>> >
>> >
>> > _______________________________________________
>> > [email protected] mailing list
>> > http://lists.freebsd.org/mailman/listinfo/freebsd-current
>> > To unsubscribe, send any mail to "[email protected]"
>>
>
>
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "[email protected]"