Subject: Re: linux-next: manual merge of the net-next tree with the net tree

From: ljp <[email-masked]>
Date: Fri, 06 Nov 2020 14:19:10 -0600

On 2020-11-03 18:43, Stephen Rothwell wrote:
> Hi all,
> 
> Today's linux-next merge of the net-next tree got a conflict in:
> 
>   drivers/net/ethernet/ibm/ibmvnic.c
> 
> between commit:
> 
>   1d8504937478 ("powerpc/vnic: Extend "failover pending" window")
> 
> from the net tree and commit:
> 
>   16b5f5ce351f ("ibmvnic: merge do_change_param_reset into do_reset")
> 
> from the net-next tree.
> 
> I fixed it up (see below) and can carry the fix as necessary. This
> is now fixed as far as linux-next is concerned, but any non trivial
> conflicts should be mentioned to your upstream maintainer when your 
> tree
> is submitted for merging.  You may also want to consider cooperating
> with the maintainer of the conflicting tree to minimise any 
> particularly
> complex conflicts.
> 

Sorry I missed this email.
The fix is correct.
Thank you Stephen.

> --
> Cheers,
> Stephen Rothwell
> 
> diff --cc drivers/net/ethernet/ibm/ibmvnic.c
> index da15913879f8,f4167de30461..000000000000
> --- a/drivers/net/ethernet/ibm/ibmvnic.c
> +++ b/drivers/net/ethernet/ibm/ibmvnic.c
> @@@ -1930,17 -1841,12 +1850,20 @@@ static int do_reset(struct 
> ibmvnic_adap
>   	netdev_dbg(adapter->netdev, "Re-setting driver (%d)\n",
>   		   rwi->reset_reason);
> 
> - 	rtnl_lock();
> + 	adapter->reset_reason = rwi->reset_reason;
> + 	/* requestor of VNIC_RESET_CHANGE_PARAM already has the rtnl lock */
> + 	if (!(adapter->reset_reason == VNIC_RESET_CHANGE_PARAM))
> + 		rtnl_lock();
> +
>  +	/*
>  +	 * Now that we have the rtnl lock, clear any pending failover.
>  +	 * This will ensure ibmvnic_open() has either completed or will
>  +	 * block until failover is complete.
>  +	 */
>  +	if (rwi->reset_reason == VNIC_RESET_FAILOVER)
>  +		adapter->failover_pending = false;
>  +
>   	netif_carrier_off(netdev);
> - 	adapter->reset_reason = rwi->reset_reason;
> 
>   	old_num_rx_queues = adapter->req_rx_queues;
>   	old_num_tx_queues = adapter->req_tx_queues;
> @@@ -2214,17 -2140,7 +2157,14 @@@ static void __ibmvnic_reset(struct 
> work
>   		}
>   		spin_unlock_irqrestore(&adapter->state_lock, flags);
> 
> - 		if (rwi->reset_reason == VNIC_RESET_CHANGE_PARAM) {
> - 			/* CHANGE_PARAM requestor holds rtnl_lock */
> - 			rc = do_change_param_reset(adapter, rwi, reset_state);
> - 		} else if (adapter->force_reset_recovery) {
> + 		if (adapter->force_reset_recovery) {
>  +			/*
>  +			 * Since we are doing a hard reset now, clear the
>  +			 * failover_pending flag so we don't ignore any
>  +			 * future MOBILITY or other resets.
>  +			 */
>  +			adapter->failover_pending = false;
>  +
>   			/* Transport event occurred during previous reset */
>   			if (adapter->wait_for_reset) {
>   				/* Previous was CHANGE_PARAM; caller locked */