]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
gve: Add page size register to the register_page_list command.
authorJohn Fraker <jfraker@google.com>
Tue, 28 Nov 2023 00:26:47 +0000 (16:26 -0800)
committerJakub Kicinski <kuba@kernel.org>
Wed, 29 Nov 2023 16:32:36 +0000 (08:32 -0800)
This register is required on platforms with page sizes greater than 4k.
This is because the tx side of the driver vmaps the entire queue page
list of pages into a single flat address space, then uses the entire
space. Without communicating the guest page size to the backend, the
backend will only access the first 4k of each page in the queue page list.

Signed-off-by: Jordan Kimbrough <jrkim@google.com>
Signed-off-by: John Fraker <jfraker@google.com>
Reviewed-by: Willem de Bruijn <willemb@google.com>
Link: https://lore.kernel.org/r/20231128002648.320892-5-jfraker@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/google/gve/gve_adminq.c
drivers/net/ethernet/google/gve/gve_adminq.h

index bebb7ed113d392d93a55711b7fc12f3c66902c3f..12fbd723ecc6e5cda655fae9620ba7a53e73d2f4 100644 (file)
@@ -917,6 +917,7 @@ int gve_adminq_register_page_list(struct gve_priv *priv,
                .page_list_id = cpu_to_be32(qpl->id),
                .num_pages = cpu_to_be32(num_entries),
                .page_address_list_addr = cpu_to_be64(page_list_bus),
+               .page_size = cpu_to_be64(PAGE_SIZE),
        };
 
        err = gve_adminq_execute_cmd(priv, &cmd);
index 38a22279e8638e94900c5c0a1bc21640ceaa7df8..5865ccdccbd07c7b3263f1820dfef3525b7c9cdb 100644 (file)
@@ -219,9 +219,10 @@ struct gve_adminq_register_page_list {
        __be32 page_list_id;
        __be32 num_pages;
        __be64 page_address_list_addr;
+       __be64 page_size;
 };
 
-static_assert(sizeof(struct gve_adminq_register_page_list) == 16);
+static_assert(sizeof(struct gve_adminq_register_page_list) == 24);
 
 struct gve_adminq_unregister_page_list {
        __be32 page_list_id;