[SRU v2][F/gcp][PULL] gvnic update
Krzysztof Kozlowski
krzysztof.kozlowski at canonical.com
Wed Feb 23 09:01:37 UTC 2022
On 23/02/2022 09:49, Khaled Elmously wrote:
> On 2022-02-18 09:54:02 , Krzysztof Kozlowski wrote:
>> On 16/02/2022 07:12, Khaled Elmously wrote:
>>> BugLink: http://bugs.launchpad.net/bugs/1953575
>>>
>>> This patchset updates the gvnic driver code (GVE) to bring it up to parity with the 5.16 kernel. Note the addition of more patches compared to v1. Those patches were found to be needed during testing.
>>>
>>> Please note the patch that I reverted "gve: Check TX QPL was actually assigned" came from linux-stable. However the rest of the GVE code did not not come with it, and that was causing code conflicts. I reverted the patch and then re-applied at the right position in the list of GVE patches. This allowed me to avoid code-conflicts entirely. None of the other patches had conflicts either.
>>>
>>> These changes have been fully tested and approved by the GCP gvnic team.
>>>
>>> Thanks
>>>
>>>
>>>
>>> The following changes since commit e43bb4e9176a04609b806c58c6fd317beec79b98:
>>>
>>> UBUNTU: Ubuntu-gcp-5.4.0-1063.67 (2022-01-18 06:32:53 -0300)
>>>
>>> are available in the Git repository at:
>>>
>>> git+ssh://git.launchpad.net/~kmously/ubuntu/+source/linux/+git/focal gvnic2
>>>
>>> for you to fetch changes up to 32686cc99fedd7c55462ad0fb960d4be288d69d9:
>>>
>>> gve: Use kvcalloc() instead of kvzalloc() (2022-02-16 00:56:21 -0500)
>>>
>>> ----------------------------------------------------------------
>>> Ameer Hamza (1):
>>> gve: fix for null pointer dereference.
>>>
>>> Arnd Bergmann (1):
>>> gve: DQO: avoid unused variable warnings
>>>
>>> Bailey Forrest (17):
>>> gve: Move some static functions to a common file
>>> gve: gve_rx_copy: Move padding to an argument
>>> gve: Make gve_rx_slot_page_info.page_offset an absolute offset
>>> gve: Introduce a new model for device options
>>> gve: Introduce per netdev `enum gve_queue_format`
>>> gve: adminq: DQO specific device descriptor logic
>>> gve: Add support for DQO RX PTYPE map
>>> gve: Add dqo descriptors
>>> gve: Add DQO fields for core data structures
>>> gve: Update adminq commands to support DQO queues
>>> gve: DQO: Add core netdev features
>>> gve: DQO: Add ring allocation and initialization
>>> gve: DQO: Configure interrupts on device up
>>> gve: DQO: Add TX path
>>> gve: DQO: Add RX path
>>> gve: Fix warnings reported for DQO patchset
>>> gve: DQO: Remove incorrect prefetch
>>>
>>> Catherine Sullivan (13):
>>> gve: Use dev_info/err instead of netif_info/err.
>>> gve: Add support for raw addressing device option
>>> gve: Add support for raw addressing to the rx path
>>> gve: Add support for raw addressing in the tx path
>>> gve: Check TX QPL was actually assigned
>>> gve: Properly handle errors in gve_assign_qpl
>>> gve: Add rx buffer pagecnt bias
>>> gve: Add netif_set_xps_queue call
>>> gve: Track RX buffer allocation failures
>>> gve: Move the irq db indexes out of the ntfy block struct
>>> gve: Update gve_free_queue_page_list signature
>>> gve: remove memory barrier around seqno
>>> gve: Implement suspend/resume/shutdown
>>>
>>> Christophe JAILLET (2):
>>> gve: Propagate error codes to caller
>>> gve: Simplify code and axe the use of a deprecated API
>>>
>>> Dan Carpenter (3):
>>> gve: DQO: Fix off by one in gve_rx_dqo()
>>> gve: Fix off by one in gve_tx_timeout()
>>> gve: fix unmatched u64_stats_update_end()
>>>
>>> Daode Huang (2):
>>> net: gve: convert strlcpy to strscpy
>>> net: gve: remove duplicated allowed
>>>
>>> David Awogbemila (5):
>>> gve: NIC stats for report-stats and for ethtool
>>> gve: Enable Link Speed Reporting in the driver.
>>> gve: Rx Buffer Recycling
>>> gve: Add RX context.
>>> gve: Implement packet continuation for RX.
>>>
>>> Eric Dumazet (1):
>>> gve: report 64bit tx_bytes counter from gve_handle_report_stats()
>>>
>>> Gustavo A. R. Silva (2):
>>> gve: Replace zero-length array with flexible-array member
>>> gve: Use kvcalloc() instead of kvzalloc()
>>>
>>> Haiyue Wang (1):
>>> gve: fix the wrong AdminQ buffer overflow check
>>>
>>> Jeroen de Borst (1):
>>> gve: Correct order of processing device options
>>>
>>> John Fraker (1):
>>> gve: Recover from queue stall due to missed IRQ
>>>
>>> Jordan Kim (2):
>>> gve: Allow pageflips on larger pages
>>> gve: Add consumed counts to ethtool stats
>>>
>>> Khalid Elmously (2):
>>> Revert "gve: Check TX QPL was actually assigned"
>>> UBUNTU: SAUCE: Update get/set coalesce functions to match 5.4 ABI
>>>
>>> Kuo Zhao (3):
>>> gve: Get and set Rx copybreak via ethtool
>>> gve: Add stats for gve.
>>> gve: Add Gvnic stats AQ command and ethtool show/set-priv-flags.
>>>
>>> Michael S. Tsirkin (1):
>>> netdev: pass the stuck queue to the timeout handler
>>
>> Something here is incomplete. allyesconfig does not build:
>>
>> ../drivers/net/ethernet/ti/cpsw.c:2418:35: error: initialization of
>> ‘void (*)(struct net_device *, unsigned int)’ from incompatible pointer
>> type ‘void (*)(struct net_device *)’ [-Werror=incompatible-pointer-types]
>>
>> 2418 | .ndo_tx_timeout = cpsw_ndo_tx_timeout,
>>
>> | ^~~~~~~~~~~~~~~~~~~
>>
>> ../drivers/net/ethernet/ti/cpsw.c:2418:35: note: (near initialization
>> for ‘cpsw_netdev_ops.ndo_tx_timeout’)
>>
>
> It needs the following change:
>
> --- a/drivers/net/ethernet/ti/cpsw.c
> +++ b/drivers/net/ethernet/ti/cpsw.c
> @@ -2035,7 +2035,7 @@ static int cpsw_ndo_ioctl(struct net_device *dev, struct ifreq *req, int cmd)
> return phy_mii_ioctl(cpsw->slaves[slave_no].phy, req, cmd);
> }
>
> -static void cpsw_ndo_tx_timeout(struct net_device *ndev)
> +static void cpsw_ndo_tx_timeout(struct net_device *ndev, unsigned int txqueue)
> {
> struct cpsw_priv *priv = netdev_priv(ndev);
> struct cpsw_common *cpsw = priv->cpsw;
>
>
>
> ...as part of the first commit "netdev: pass the stuck queue to the timeout handler"
>
> I am not really sure if we should even care about configs that will never be enabled for this kernel, like this TI driver.
> In any case, the change here is simple enough and I can include it when applying the rest of the changes. Thanks
>
Being able to build everything (allyesconfig) is useful during fast
checks of backports. Especially that it is the only convenient way to
get the warnings (try building on cbd or other builds each of 30 commits
of some bigger backport and getting warnings from such builds). We
indeed do not care much whether such driver behaves correctly, but it if
it was compiling cleanly, it should be kept that way.
Best regards,
Krzysztof
More information about the kernel-team
mailing list