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
next prev 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).