{
        struct stmmac_rx_queue *rx_q = &priv->rx_queue[queue];
        struct stmmac_rx_buffer *buf = &rx_q->buf_pool[i];
+       gfp_t gfp = (GFP_ATOMIC | __GFP_NOWARN);
+
+       if (priv->dma_cap.addr64 <= 32)
+               gfp |= GFP_DMA32;
 
        if (!buf->page) {
-               buf->page = page_pool_dev_alloc_pages(rx_q->page_pool);
+               buf->page = page_pool_alloc_pages(rx_q->page_pool, gfp);
                if (!buf->page)
                        return -ENOMEM;
                buf->page_offset = stmmac_rx_offset(priv);
        }
 
        if (priv->sph && !buf->sec_page) {
-               buf->sec_page = page_pool_dev_alloc_pages(rx_q->page_pool);
+               buf->sec_page = page_pool_alloc_pages(rx_q->page_pool, gfp);
                if (!buf->sec_page)
                        return -ENOMEM;
 
        struct stmmac_rx_queue *rx_q = &priv->rx_queue[queue];
        int dirty = stmmac_rx_dirty(priv, queue);
        unsigned int entry = rx_q->dirty_rx;
+       gfp_t gfp = (GFP_ATOMIC | __GFP_NOWARN);
+
+       if (priv->dma_cap.addr64 <= 32)
+               gfp |= GFP_DMA32;
 
        while (dirty-- > 0) {
                struct stmmac_rx_buffer *buf = &rx_q->buf_pool[entry];
                        p = rx_q->dma_rx + entry;
 
                if (!buf->page) {
-                       buf->page = page_pool_dev_alloc_pages(rx_q->page_pool);
+                       buf->page = page_pool_alloc_pages(rx_q->page_pool, gfp);
                        if (!buf->page)
                                break;
                }
 
                if (priv->sph && !buf->sec_page) {
-                       buf->sec_page = page_pool_dev_alloc_pages(rx_q->page_pool);
+                       buf->sec_page = page_pool_alloc_pages(rx_q->page_pool, gfp);
                        if (!buf->sec_page)
                                break;