Thanks for the response, David! Correct the print for the mask came after those 2 lines of code. Here is the snippet:
/* unconditionally mask off the highest bit */
bit = fls(mask) - 1;
mask &= ~(1 << bit);
/* Debug added for lp1783906: */ dump_stack(); pr_info("***-> Function calling sata_down_spd_limit: %pf", __builtin_return_address(0)); printk(KERN_DEBUG "***-> Value of spd_limit: %u\n", spd_limit); printk(KERN_DEBUG "***-> Value of sstatus: %u\n", sstatus); printk(KERN_DEBUG "***-> Value of spd: %u\n", spd); printk(KERN_DEBUG "***-> Value of mask: %u\n", mask);
/*
* Mask off all speeds higher than or equal to the current one. At
* this point, if current SPD is not available and we previously
* recorded the link speed from SStatus, the driver has already
* masked off the highest bit so mask should already be 1 or 0.
* Otherwise, we should not force 1.5Gbps on a link where we have
* not previously recorded speed from SStatus. Just return in this
* case.
*/
if (spd > 1) mask &= (1 << (spd - 1)) - 1;
Thanks for the response, David! Correct the print for the mask came after those 2 lines of code. Here is the snippet:
/* unconditionally mask off the highest bit */
bit = fls(mask) - 1;
mask &= ~(1 << bit);
/* Debug added for lp1783906: */
dump_stack( );
pr_info( "***-> Function calling sata_down_ spd_limit: %pf", __builtin_ return_ address( 0));
printk( KERN_DEBUG "***-> Value of spd_limit: %u\n", spd_limit);
printk( KERN_DEBUG "***-> Value of sstatus: %u\n", sstatus);
printk( KERN_DEBUG "***-> Value of spd: %u\n", spd);
printk( KERN_DEBUG "***-> Value of mask: %u\n", mask);
/*
mask &= (1 << (spd - 1)) - 1;
* Mask off all speeds higher than or equal to the current one. At
* this point, if current SPD is not available and we previously
* recorded the link speed from SStatus, the driver has already
* masked off the highest bit so mask should already be 1 or 0.
* Otherwise, we should not force 1.5Gbps on a link where we have
* not previously recorded speed from SStatus. Just return in this
* case.
*/
if (spd > 1)