All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hauke Mehrtens <hauke@hauke-m.de>
To: johannes@sipsolutions.net
Cc: backports@vger.kernel.org, Hauke Mehrtens <hauke@hauke-m.de>
Subject: [PATCH 03/12] backports: Add page_frag_alloc() and __page_frag_cache_drain()
Date: Sun,  2 Dec 2018 12:52:17 +0100	[thread overview]
Message-ID: <20181202115226.3594-4-hauke@hauke-m.de> (raw)
In-Reply-To: <20181202115226.3594-1-hauke@hauke-m.de>

This was introduced in kernel commit 8c2dd3e4a4b ("mm: rename
__alloc_page_frag to page_frag_alloc and __free_page_frag to
page_frag_free") and commit 44fdffd7050 ("mm: add support for releasing
multiple instances of a page") and is used by the mt76 driver.
Backporting it to kernel older than 4.2 is harder so just do it till
that version.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
---
 backport/backport-include/linux/gfp.h | 12 ++++++++++++
 backport/compat/backport-4.10.c       | 22 ++++++++++++++++++++++
 dependencies                          |  9 +++++----
 3 files changed, 39 insertions(+), 4 deletions(-)

diff --git a/backport/backport-include/linux/gfp.h b/backport/backport-include/linux/gfp.h
index 42f818f1..d41d4277 100644
--- a/backport/backport-include/linux/gfp.h
+++ b/backport/backport-include/linux/gfp.h
@@ -10,4 +10,16 @@
 #define __GFP_KSWAPD_RECLAIM	((__force gfp_t)___GFP_KSWAPD_RECLAIM) /* kswapd can wake */
 #endif
 
+#if LINUX_VERSION_IS_LESS(4,10,0) && LINUX_VERSION_IS_GEQ(4,2,0)
+#define page_frag_alloc LINUX_BACKPORT(page_frag_alloc)
+static inline void *page_frag_alloc(struct page_frag_cache *nc,
+				    unsigned int fragsz, gfp_t gfp_mask)
+{
+	return __alloc_page_frag(nc, fragsz, gfp_mask);
+}
+
+#define __page_frag_cache_drain LINUX_BACKPORT(__page_frag_cache_drain)
+void __page_frag_cache_drain(struct page *page, unsigned int count);
+#endif /* < 4.10 && >= 4.2 */
+
 #endif /* __BACKPORT_LINUX_GFP_H */
diff --git a/backport/compat/backport-4.10.c b/backport/compat/backport-4.10.c
index 44e02dd7..a35c699e 100644
--- a/backport/compat/backport-4.10.c
+++ b/backport/compat/backport-4.10.c
@@ -12,6 +12,8 @@
 #include <linux/netdevice.h>
 #include <linux/ethtool.h>
 #include <linux/mii.h>
+#include <linux/page_ref.h>
+#include <linux/gfp.h>
 
 #if LINUX_VERSION_IS_GEQ(4,6,0)
 #if LINUX_VERSION_IS_LESS(4,7,0)
@@ -252,3 +254,23 @@ int mii_ethtool_get_link_ksettings(struct mii_if_info *mii,
 }
 EXPORT_SYMBOL(mii_ethtool_get_link_ksettings);
 #endif /* LINUX_VERSION_IS_GEQ(4,6,0) */
+
+#if LINUX_VERSION_IS_GEQ(4,2,0)
+void __page_frag_cache_drain(struct page *page, unsigned int count)
+{
+	VM_BUG_ON_PAGE(page_ref_count(page) == 0, page);
+
+	if (page_ref_sub_and_test(page, count)) {
+		unsigned int order = compound_order(page);
+
+		/*
+		 * __free_pages_ok() is not exported so call
+		 * __free_pages() which decrements the ref counter
+		 * and increment the ref counter before.
+		 */
+		page_ref_inc(page);
+		__free_pages(page, order);
+	}
+}
+EXPORT_SYMBOL_GPL(__page_frag_cache_drain);
+#endif
diff --git a/dependencies b/dependencies
index 84bffd77..7d483a28 100644
--- a/dependencies
+++ b/dependencies
@@ -71,11 +71,12 @@ RSI_SDIO 3.13
 # For Coexsitence the BT driver has to export rsi_bt_ops
 RSI_COEX 4.17
 
-# depends on devm_led_classdev_register()
+# depends on devm_led_classdev_register() and struct page_frag_cache
 # (can't use MT76_CORE for this as it's selected)
-MT76x0U 4.1
-MT76x2E 4.1
-MT76x2U 4.1
+MT76x0U 4.2
+MT76x0E 4.2
+MT76x2E 4.2
+MT76x2U 4.2
 
 # select_queue_fallback_t is missing
 RTL8723BS 3.14
-- 
2.11.0

--
To unsubscribe from this list: send the line "unsubscribe backports" in

  parent reply	other threads:[~2018-12-02 11:52 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-12-02 11:52 [PATCH 00/12] backports: Multiple fixes for kernel 4.20 Hauke Mehrtens
2018-12-02 11:52 ` [PATCH 01/12] backports: Refresh patches on kernel 4.20-rc4 Hauke Mehrtens
2018-12-02 11:52 ` [PATCH 02/12] backports: Add page_ref_count() and page_ref_sub_and_test() Hauke Mehrtens
2018-12-02 11:52 ` Hauke Mehrtens [this message]
2018-12-02 11:52 ` [PATCH 04/12] backports: Add missing include for mt76 Hauke Mehrtens
2018-12-02 11:52 ` [PATCH 05/12] backports: Add device_get_mac_address() Hauke Mehrtens
2018-12-02 11:52 ` [PATCH 06/12] backports: Remove BPAUTO_CRYPTO_SKCIPHER Hauke Mehrtens
2018-12-02 11:52 ` [PATCH 07/12] backports: Fix pci_alloc_irq_vectors() backport Hauke Mehrtens
2018-12-02 11:52 ` [PATCH 08/12] backports: Revert "dependencies: Make WIL6210 depend on kernel >= 4.8" Hauke Mehrtens
2018-12-02 11:52 ` [PATCH 09/12] backports: Make TI WLCORE depend on kernel >= 4.2 Hauke Mehrtens
2018-12-02 11:52 ` [PATCH 10/12] backports: Remove unused code from backport-public_key.h Hauke Mehrtens
2018-12-02 11:52 ` [PATCH 11/12] backports: Remove unused default configurations Hauke Mehrtens
2018-12-02 11:52 ` [PATCH 12/12] backports: Update wifi default configuration Hauke Mehrtens
2018-12-07 20:01 ` [PATCH 00/12] backports: Multiple fixes for kernel 4.20 Hauke Mehrtens

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20181202115226.3594-4-hauke@hauke-m.de \
    --to=hauke@hauke-m.de \
    --cc=backports@vger.kernel.org \
    --cc=johannes@sipsolutions.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.