--- a/drivers/net/wireless/intel/iwlwifi/dvm/calib.c
+++ b/drivers/net/wireless/intel/iwlwifi/dvm/calib.c
@@ -120,7 +120,7 @@ int iwl_calib_set(struct iwl_priv *priv,
 	struct iwl_calib_result *res, *tmp;
 
 	res = kmalloc(sizeof(*res) + len - sizeof(struct iwl_calib_hdr),
-		      GFP_ATOMIC);
+		      GFP_ATOMIC | GFP_LX_DMA);
 	if (!res)
 		return -ENOMEM;
 	memcpy(&res->hdr, cmd, len);
--- a/drivers/net/wireless/intel/iwlwifi/dvm/scan.c
+++ b/drivers/net/wireless/intel/iwlwifi/dvm/scan.c
@@ -666,7 +666,7 @@ static int iwlagn_request_scan(struct iwl_priv *priv, struct ieee80211_vif *vif)
 		ctx = iwl_rxon_ctx_from_vif(vif);
 
 	if (!priv->scan_cmd) {
-		priv->scan_cmd = kmalloc(scan_cmd_size, GFP_KERNEL);
+		priv->scan_cmd = kmalloc(scan_cmd_size, GFP_KERNEL | GFP_LX_DMA);
 		if (!priv->scan_cmd) {
 			IWL_DEBUG_SCAN(priv,
 				       "fail to allocate memory for scan\n");
--- a/drivers/net/wireless/intel/iwlwifi/iwl-phy-db.c
+++ b/drivers/net/wireless/intel/iwlwifi/iwl-phy-db.c
@@ -251,7 +251,7 @@ int iwl_phy_db_set_section(struct iwl_phy_db *phy_db,
 		return -EINVAL;
 
 	kfree(entry->data);
-	entry->data = kmemdup(phy_db_notif->data, size, GFP_ATOMIC);
+	entry->data = kmemdup(phy_db_notif->data, size, GFP_ATOMIC | GFP_LX_DMA);
 	if (!entry->data) {
 		entry->size = 0;
 		return -ENOMEM;
--- a/drivers/net/wireless/intel/iwlwifi/iwl-trans.c
+++ b/drivers/net/wireless/intel/iwlwifi/iwl-trans.c
@@ -99,7 +99,7 @@ struct iwl_trans *iwl_trans_alloc(unsigned int priv_size,
 		kmem_cache_create(trans->dev_cmd_pool_name,
 				  sizeof(struct iwl_device_cmd),
 				  sizeof(void *),
-				  SLAB_HWCACHE_ALIGN,
+				  SLAB_HWCACHE_ALIGN|SLAB_LX_DMA,
 				  NULL);
 	if (!trans->dev_cmd_pool)
 		return NULL;
--- a/drivers/net/wireless/intel/iwlwifi/mvm/ops.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/ops.c
@@ -767,7 +767,7 @@ iwl_op_mode_mvm_start(struct iwl_trans *trans, const struct iwl_cfg *cfg,
 
 	scan_size = iwl_mvm_scan_size(mvm);
 
-	mvm->scan_cmd = kmalloc(scan_size, GFP_KERNEL);
+	mvm->scan_cmd = kmalloc(scan_size, GFP_KERNEL | GFP_LX_DMA);
 	if (!mvm->scan_cmd)
 		goto out_free;
 
--- a/drivers/net/wireless/intel/iwlwifi/mvm/scan.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/scan.c
@@ -501,11 +501,11 @@ iwl_mvm_config_sched_scan_profiles(struct iwl_mvm *mvm,
 	else
 		blacklist_len = IWL_SCAN_MAX_BLACKLIST_LEN;
 
-	blacklist = kzalloc(sizeof(*blacklist) * blacklist_len, GFP_KERNEL);
+	blacklist = kzalloc(sizeof(*blacklist) * blacklist_len, GFP_KERNEL | GFP_LX_DMA);
 	if (!blacklist)
 		return -ENOMEM;
 
-	profile_cfg = kzalloc(sizeof(*profile_cfg), GFP_KERNEL);
+	profile_cfg = kzalloc(sizeof(*profile_cfg), GFP_KERNEL | GFP_LX_DMA);
 	if (!profile_cfg) {
 		ret = -ENOMEM;
 		goto free_blacklist;
@@ -1052,7 +1052,7 @@ int iwl_mvm_config_scan(struct iwl_mvm *mvm)
 		cmd_size = sizeof(struct iwl_scan_config_v1);
 	cmd_size += mvm->fw->ucode_capa.n_scan_channels;
 
-	cfg = kzalloc(cmd_size, GFP_KERNEL);
+	cfg = kzalloc(cmd_size, GFP_KERNEL | GFP_LX_DMA);
 	if (!cfg)
 		return -ENOMEM;
 
--- a/drivers/net/wireless/intel/iwlwifi/pcie/tx.c
+++ b/drivers/net/wireless/intel/iwlwifi/pcie/tx.c
@@ -502,7 +502,7 @@ int iwl_pcie_txq_alloc(struct iwl_trans *trans, struct iwl_txq *txq,
 
 	txq->entries = kcalloc(slots_num,
 			       sizeof(struct iwl_pcie_txq_entry),
-			       GFP_KERNEL);
+			       GFP_KERNEL | GFP_LX_DMA);
 
 	if (!txq->entries)
 		goto error;
@@ -511,7 +511,7 @@ int iwl_pcie_txq_alloc(struct iwl_trans *trans, struct iwl_txq *txq,
 		for (i = 0; i < slots_num; i++) {
 			txq->entries[i].cmd =
 				kmalloc(sizeof(struct iwl_device_cmd),
-					GFP_KERNEL);
+					GFP_KERNEL | GFP_LX_DMA);
 			if (!txq->entries[i].cmd)
 				goto error;
 		}
@@ -938,7 +938,7 @@ static int iwl_pcie_tx_alloc(struct iwl_trans *trans)
 	}
 
 	trans_pcie->txq_memory = kcalloc(trans->cfg->base_params->num_of_queues,
-					 sizeof(struct iwl_txq), GFP_KERNEL);
+					 sizeof(struct iwl_txq), GFP_KERNEL | GFP_LX_DMA);
 	if (!trans_pcie->txq_memory) {
 		IWL_ERR(trans, "Not enough memory for txq\n");
 		ret = -ENOMEM;
@@ -1539,7 +1539,7 @@ static int iwl_pcie_enqueue_hcmd(struct iwl_trans *trans,
 			}
 
 			dup_buf = kmemdup(cmddata[i], cmdlen[i],
-					  GFP_ATOMIC);
+					  GFP_ATOMIC | GFP_LX_DMA);
 			if (!dup_buf)
 				return -ENOMEM;
 		} else {
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -130,6 +130,8 @@ static void *__kmalloc_reserve(size_t size, gfp_t flags, int node,
 	void *obj;
 	bool ret_pfmemalloc = false;
 
+	flags |= GFP_LX_DMA;
+
 	/*
 	 * Try a regular allocation, when that fails and we're not entitled
 	 * to the reserves, fail.
@@ -278,7 +280,7 @@ struct sk_buff *__build_skb(void *data, unsigned int frag_size)
 	struct sk_buff *skb;
 	unsigned int size = frag_size ? : ksize(data);
 
-	skb = kmem_cache_alloc(skbuff_head_cache, GFP_ATOMIC);
+	skb = kmem_cache_alloc(skbuff_head_cache, GFP_ATOMIC|GFP_LX_DMA);
 	if (!skb)
 		return NULL;