> -----Original Message----- > From: Intel-wired-lan <[email protected]> On Behalf > Of Mike Rapoport (Microsoft) > Sent: Wednesday, July 1, 2026 3:57 PM > To: Andrew Lunn <[email protected]>; David S. Miller > <[email protected]>; Eric Dumazet <[email protected]>; Jakub > Kicinski <[email protected]>; Manish Chopra <[email protected]>; Paolo > Abeni <[email protected]> > Cc: Edward Cree <[email protected]>; Kitszel, Przemyslaw > <[email protected]>; Sudarsana Kalluru > <[email protected]>; Nguyen, Anthony L > <[email protected]>; Mike Rapoport <[email protected]>; intel- > [email protected]; [email protected]; linux- > [email protected]; [email protected]; [email protected] > Subject: [Intel-wired-lan] [PATCH 2/4] ice: use kzalloc() to allocate > staging buffer for reading from GNSS > > ice_gnss_read() uses get_zeroed_page() to allocate a staging buffer > for reading GNSS module data via I2C bus. > > This buffer can be allocated with kmalloc() as there's nothing special > about it to go directly to the page allocator. > > kmalloc() provides a better API that does not require ugly casts and > kfree() does not need to know the size of the freed object. > > Performance difference between kmalloc() and __get_free_pages() is not > measurable as both allocators take an object/page from a per-CPU list > for fast path allocations. > > For the slow path the performance is anyway determined by the amount > of reclaim involved rather than by what allocator is used. > > Replace use of get_zeroed_page() with kzalloc() and free_page() with > kfree(). > > Link: https://lore.kernel.org/all/635405e4-9423-4a25-a6e7- > [email protected] > Signed-off-by: Mike Rapoport (Microsoft) <[email protected]> > --- > drivers/net/ethernet/intel/ice/ice_gnss.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/drivers/net/ethernet/intel/ice/ice_gnss.c > b/drivers/net/ethernet/intel/ice/ice_gnss.c > index 8fd954f1ebd6..7d21c3417b0b 100644 > --- a/drivers/net/ethernet/intel/ice/ice_gnss.c > +++ b/drivers/net/ethernet/intel/ice/ice_gnss.c > @@ -2,6 +2,7 @@ > /* Copyright (C) 2021-2022, Intel Corporation. */ > > #include "ice.h" > +#include <linux/slab.h> > #include "ice_lib.h" > > /** > @@ -124,7 +125,7 @@ static void ice_gnss_read(struct kthread_work > *work) > > data_len = min_t(typeof(data_len), data_len, PAGE_SIZE); > > - buf = (char *)get_zeroed_page(GFP_KERNEL); > + buf = kzalloc(PAGE_SIZE, GFP_KERNEL); > if (!buf) { > err = -ENOMEM; > goto requeue; > @@ -151,7 +152,7 @@ static void ice_gnss_read(struct kthread_work > *work) > count, i); > delay = ICE_GNSS_TIMER_DELAY_TIME; > free_buf: > - free_page((unsigned long)buf); > + kfree(buf); > requeue: > kthread_queue_delayed_work(gnss->kworker, &gnss->read_work, > delay); > if (err) > > -- > 2.53.0
Reviewed-by: Aleksandr Loktionov <[email protected]>
