rpms/kernel/devel btrfs-prohibit-a-operation-of-changing-acls-mask-when-noacl-mount-option-is-used.patch, NONE, 1.1.2.2 btrfs-should-add-permission-check-for-setfacl.patch, NONE, 1.1.2.2 iwlwifi-cancel-scan-watchdog-in-iwl_bg_abort_scan.patch, NONE, 1.1.2.1 iwlwifi-manage-QoS-by-mac-stack.patch, NONE, 1.1.2.2 mac80211-do-not-wipe-out-old-supported-rates.patch, NONE, 1.1.2.2 mac80211-explicitly-disable-enable-QoS.patch, NONE, 1.1.2.2 mac80211-fix-supported-rates-IE-if-AP-doesnt-give-us-its-rates.patch, NONE, 1.1.2.2 kernel.spec, 1.1294.2.106, 1.1294.2.107 xen.pvops.patch, 1.1.2.69, 1.1.2.70 xen.pvops.post.patch, 1.1.2.39, 1.1.2.40

myoung myoung at fedoraproject.org
Wed Jun 16 19:14:14 UTC 2010


Author: myoung

Update of /cvs/pkgs/rpms/kernel/devel
In directory cvs01.phx2.fedoraproject.org:/tmp/cvs-serv5409

Modified Files:
      Tag: private-myoung-dom0-branch
	kernel.spec xen.pvops.patch xen.pvops.post.patch 
Added Files:
      Tag: private-myoung-dom0-branch
	btrfs-prohibit-a-operation-of-changing-acls-mask-when-noacl-mount-option-is-used.patch 
	btrfs-should-add-permission-check-for-setfacl.patch 
	iwlwifi-cancel-scan-watchdog-in-iwl_bg_abort_scan.patch 
	iwlwifi-manage-QoS-by-mac-stack.patch 
	mac80211-do-not-wipe-out-old-supported-rates.patch 
	mac80211-explicitly-disable-enable-QoS.patch 
	mac80211-fix-supported-rates-IE-if-AP-doesnt-give-us-its-rates.patch 
Log Message:
another pvops update


btrfs-prohibit-a-operation-of-changing-acls-mask-when-noacl-mount-option-is-used.patch:
 acl.c |    3 +++
 1 file changed, 3 insertions(+)

--- NEW FILE btrfs-prohibit-a-operation-of-changing-acls-mask-when-noacl-mount-option-is-used.patch ---
From: Shi Weihua <shiwh at cn.fujitsu.com>
Date: Tue, 18 May 2010 00:51:54 +0000 (+0000)
Subject: Btrfs: prohibit a operation of changing acl's mask when noacl mount option used
X-Git-Tag: v2.6.35-rc3~3^2~3
X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=731e3d1b

Btrfs: prohibit a operation of changing acl's mask when noacl mount option used

when used Posix File System Test Suite(pjd-fstest) to test btrfs,
some cases about setfacl failed when noacl mount option used.
I simplified used commands in pjd-fstest, and the following steps
can reproduce it.
------------------------
# cd btrfs-part/
# mkdir aaa
# setfacl -m m::rw aaa    <- successed, but not expected by pjd-fstest.
------------------------
I checked ext3, a warning message occured, like as:
  setfacl: aaa/: Operation not supported
Certainly, it's expected by pjd-fstest.

So, i compared acl.c of btrfs and ext3. Based on that, a patch created.
Fortunately, it works.

Signed-off-by: Shi Weihua <shiwh at cn.fujitsu.com>
Signed-off-by: Chris Mason <chris.mason at oracle.com>
---

diff --git a/fs/btrfs/acl.c b/fs/btrfs/acl.c
index 6b4d0cc..a372985 100644
--- a/fs/btrfs/acl.c
+++ b/fs/btrfs/acl.c
@@ -163,6 +163,9 @@ static int btrfs_xattr_acl_set(struct dentry *dentry, const char *name,
 	if (!is_owner_or_cap(inode))
 		return -EPERM;
 
+	if (!IS_POSIXACL(inode))
+		return -EOPNOTSUPP;
+
 	if (value) {
 		acl = posix_acl_from_xattr(value, size);
 		if (acl == NULL) {

btrfs-should-add-permission-check-for-setfacl.patch:
 acl.c |    3 +++
 1 file changed, 3 insertions(+)

--- NEW FILE btrfs-should-add-permission-check-for-setfacl.patch ---
From: Shi Weihua <shiwh at cn.fujitsu.com>
Date: Tue, 18 May 2010 00:50:32 +0000 (+0000)
Subject: Btrfs: should add a permission check for setfacl
X-Git-Tag: v2.6.35-rc3~3^2~4
X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=2f26afba

Btrfs: should add a permission check for setfacl

On btrfs, do the following
------------------
# su user1
# cd btrfs-part/
# touch aaa
# getfacl aaa
  # file: aaa
  # owner: user1
  # group: user1
  user::rw-
  group::rw-
  other::r--
# su user2
# cd btrfs-part/
# setfacl -m u::rwx aaa
# getfacl aaa
  # file: aaa
  # owner: user1
  # group: user1
  user::rwx           <- successed to setfacl
  group::rw-
  other::r--
------------------
but we should prohibit it that user2 changing user1's acl.
In fact, on ext3 and other fs, a message occurs:
  setfacl: aaa: Operation not permitted

This patch fixed it.
Signed-off-by: Shi Weihua <shiwh at cn.fujitsu.com>
Signed-off-by: Chris Mason <chris.mason at oracle.com>
---
diff --git a/fs/btrfs/acl.c b/fs/btrfs/acl.c
index 6ef7b26..6b4d0cc 100644
--- a/fs/btrfs/acl.c
+++ b/fs/btrfs/acl.c
@@ -160,6 +160,9 @@ static int btrfs_xattr_acl_set(struct dentry *dentry, const char *name,
 	int ret = 0;
 	struct posix_acl *acl = NULL;
 
+	if (!is_owner_or_cap(inode))
+		return -EPERM;
+
 	if (value) {
 		acl = posix_acl_from_xattr(value, size);
 		if (acl == NULL) {

iwlwifi-cancel-scan-watchdog-in-iwl_bg_abort_scan.patch:
 iwl-scan.c |    1 +
 1 file changed, 1 insertion(+)

--- NEW FILE iwlwifi-cancel-scan-watchdog-in-iwl_bg_abort_scan.patch ---
commit a69b03e941abae00380fc6bc1877fb797a1b31e6
Author: John W. Linville <linville at tuxdriver.com>
Date:   Mon Jun 14 14:30:25 2010 -0400

    iwlwifi: cancel scan watchdog in iwl_bg_abort_scan
    
    Avoids this:
    
    WARNING: at net/mac80211/scan.c:312 ieee80211_scan_completed+0x5f/0x1f1
    [mac80211]()
    Hardware name: Latitude E5400
    Modules linked in: aes_x86_64 aes_generic fuse ipt_MASQUERADE iptable_nat
    nf_nat rfcomm sco bridge stp llc bnep l2cap sunrpc cpufreq_ondemand
    acpi_cpufreq freq_table xt_physdev ip6t_REJECT nf_conntrack_ipv6
    ip6table_filter ip6_tables ipv6 kvm_intel kvm uinput arc4 ecb
    snd_hda_codec_intelhdmi snd_hda_codec_idt snd_hda_intel iwlagn snd_hda_codec
    snd_hwdep snd_seq snd_seq_device iwlcore snd_pcm dell_wmi sdhci_pci sdhci
    iTCO_wdt tg3 dell_laptop mmc_core i2c_i801 wmi mac80211 snd_timer
    iTCO_vendor_support btusb joydev dcdbas cfg80211 bluetooth snd soundcore
    microcode rfkill snd_page_alloc firewire_ohci firewire_core crc_itu_t
    yenta_socket rsrc_nonstatic i915 drm_kms_helper drm i2c_algo_bit i2c_core video
    output [last unloaded: scsi_wait_scan]
    Pid: 979, comm: iwlagn Tainted: G        W  2.6.33.3-85.fc13.x86_64 #1
    Call Trace:
    [<ffffffff8104b558>] warn_slowpath_common+0x77/0x8f
    [<ffffffff8104b57f>] warn_slowpath_null+0xf/0x11
    [<ffffffffa01bb7d9>] ieee80211_scan_completed+0x5f/0x1f1 [mac80211]
    [<ffffffffa02a23f0>] iwl_bg_scan_completed+0xbb/0x17a [iwlcore]
    [<ffffffff81060d3d>] worker_thread+0x1a4/0x232
    [<ffffffffa02a2335>] ? iwl_bg_scan_completed+0x0/0x17a [iwlcore]
    [<ffffffff81064817>] ? autoremove_wake_function+0x0/0x34
    [<ffffffff81060b99>] ? worker_thread+0x0/0x232
    [<ffffffff810643c7>] kthread+0x7a/0x82
    [<ffffffff8100a924>] kernel_thread_helper+0x4/0x10
    [<ffffffff8106434d>] ? kthread+0x0/0x82
    [<ffffffff8100a920>] ? kernel_thread_helper+0x0/0x10
    
    Reported here:
    
    	https://bugzilla.redhat.com/show_bug.cgi?id=590436
    
    Signed-off-by: John W. Linville <linville at tuxdriver.com>
    Reported-by: Mihai Harpau <mishu at piatafinanciara.ro>
    Cc: stable at kernel.org
    Acked-by: Reinette Chatre <reinette.chatre at intel.com>

diff --git a/drivers/net/wireless/iwlwifi/iwl-scan.c b/drivers/net/wireless/iwlwifi/iwl-scan.c
index 5d3f51f..386c5f9 100644
--- a/drivers/net/wireless/iwlwifi/iwl-scan.c
+++ b/drivers/net/wireless/iwlwifi/iwl-scan.c
@@ -491,6 +491,7 @@ void iwl_bg_abort_scan(struct work_struct *work)
 
 	mutex_lock(&priv->mutex);
 
+	cancel_delayed_work_sync(&priv->scan_check);
 	set_bit(STATUS_SCAN_ABORTING, &priv->status);
 	iwl_send_scan_abort(priv);
 

iwlwifi-manage-QoS-by-mac-stack.patch:
 include/net/mac80211.h |    5 +++++
 net/mac80211/mlme.c    |    9 ++++++++-
 net/mac80211/util.c    |    6 +++++-
 3 files changed, 18 insertions(+), 2 deletions(-)

--- NEW FILE iwlwifi-manage-QoS-by-mac-stack.patch ---
From: Stanislaw Gruszka <sgruszka at redhat.com>
To: kernel at lists.fedoraproject.org, "John W. Linville" <linville at redhat.com>
Subject: [PATCH 1/4 2.6.32.y] mac80211: explicitly disable/enable QoS
Date: Fri, 11 Jun 2010 17:03:13 +0200

Add interface to disable/enable QoS (aka WMM or WME). Currently drivers
enable it explicitly when ->conf_tx method is called, and newer disable.
Disabling is needed for some APs, which do not support QoS, such
we should send QoS frames to them.

Signed-off-by: Stanislaw Gruszka <sgruszka at redhat.com>
---
 include/net/mac80211.h |    5 +++++
 net/mac80211/mlme.c    |    9 ++++++++-
 net/mac80211/util.c    |    5 +++++
 3 files changed, 18 insertions(+), 1 deletions(-)

diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index c39ed07..de904fc 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -572,11 +572,15 @@ struct ieee80211_rx_status {
  *	may turn the device off as much as possible. Typically, this flag will
  *	be set when an interface is set UP but not associated or scanning, but
  *	it can also be unset in that case when monitor interfaces are active.
+ * @IEEE80211_CONF_QOS: Enable 802.11e QoS also know as WMM (Wireless
+ *      Multimedia). On some drivers (iwlwifi is one of know) we have
+ *      to enable/disable QoS explicitly.
  */
 enum ieee80211_conf_flags {
 	IEEE80211_CONF_RADIOTAP		= (1<<0),
 	IEEE80211_CONF_PS		= (1<<1),
 	IEEE80211_CONF_IDLE		= (1<<2),
+	IEEE80211_CONF_QOS		= (1<<3),
 };
 
 
@@ -599,6 +603,7 @@ enum ieee80211_conf_changed {
 	IEEE80211_CONF_CHANGE_CHANNEL		= BIT(6),
 	IEEE80211_CONF_CHANGE_RETRY_LIMITS	= BIT(7),
 	IEEE80211_CONF_CHANGE_IDLE		= BIT(8),
+	IEEE80211_CONF_CHANGE_QOS		= BIT(9),
 };
 
 /**
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
index 4a15df1..d3950b7 100644
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -786,6 +786,9 @@ static void ieee80211_sta_wmm_params(struct ieee80211_local *local,
 	int count;
 	u8 *pos;
 
+	if (!local->ops->conf_tx)
+		return;
+
 	if (!(ifmgd->flags & IEEE80211_STA_WMM_ENABLED))
 		return;
 
@@ -844,11 +847,15 @@ static void ieee80211_sta_wmm_params(struct ieee80211_local *local,
 		       wiphy_name(local->hw.wiphy), queue, aci, acm,
 		       params.aifs, params.cw_min, params.cw_max, params.txop);
 #endif
-		if (drv_conf_tx(local, queue, &params) && local->ops->conf_tx)
+		if (drv_conf_tx(local, queue, &params))
 			printk(KERN_DEBUG "%s: failed to set TX queue "
 			       "parameters for queue %d\n",
 			       wiphy_name(local->hw.wiphy), queue);
 	}
+
+	/* enable WMM or activate new settings */
+	local->hw.conf.flags |=	IEEE80211_CONF_QOS;
+	drv_config(local, IEEE80211_CONF_CHANGE_QOS);
 }
 
 static u32 ieee80211_handle_bss_capability(struct ieee80211_sub_if_data *sdata,
diff --git a/net/mac80211/util.c b/net/mac80211/util.c
index 31b1085..21f11cc 100644
--- a/net/mac80211/util.c
+++ b/net/mac80211/util.c
@@ -791,6 +791,11 @@ void ieee80211_set_wmm_default(struct ieee80211_sub_if_data *sdata)
 
 		drv_conf_tx(local, queue, &qparam);
 	}
+
+	/* after reinitialize QoS TX queues setting to default,
+	 * disable QoS at all */
+	local->hw.conf.flags &=	~IEEE80211_CONF_QOS;
+	drv_config(local, IEEE80211_CONF_CHANGE_QOS);
 }
 
 void ieee80211_sta_def_wmm_params(struct ieee80211_sub_if_data *sdata,
-- 
1.6.2.5

_______________________________________________
kernel mailing list
kernel at lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/kernel


mac80211-do-not-wipe-out-old-supported-rates.patch:
 scan.c |   22 +++++++++++-----------
 1 file changed, 11 insertions(+), 11 deletions(-)

--- NEW FILE mac80211-do-not-wipe-out-old-supported-rates.patch ---
From: Stanislaw Gruszka <sgruszka at redhat.com>
To: kernel at lists.fedoraproject.org, "John W. Linville" <linville at redhat.com>
Subject: [PATCH 3/4 2.6.32.y] mac80211: do not wip out old supported rates
Date: Fri, 11 Jun 2010 17:03:15 +0200

Use old supported rates, if some buggy AP do not provide
supported rates information element in managment frame.

Signed-off-by: Stanislaw Gruszka <sgruszka at redhat.com>
---
 net/mac80211/scan.c |   21 +++++++++++----------
 1 files changed, 11 insertions(+), 10 deletions(-)

diff --git a/net/mac80211/scan.c b/net/mac80211/scan.c
index fd6411d..169111a 100644
--- a/net/mac80211/scan.c
+++ b/net/mac80211/scan.c
@@ -62,7 +62,7 @@ ieee80211_bss_info_update(struct ieee80211_local *local,
 			  bool beacon)
 {
 	struct ieee80211_bss *bss;
-	int clen;
+	int clen, srlen;
 	s32 signal = 0;
 
 	if (local->hw.flags & IEEE80211_HW_SIGNAL_DBM)
@@ -94,23 +94,24 @@ ieee80211_bss_info_update(struct ieee80211_local *local,
 	if (bss->dtim_period == 0)
 		bss->dtim_period = 1;
 
-	bss->supp_rates_len = 0;
+	/* replace old supported rates if we get new values */
+	srlen = 0;
 	if (elems->supp_rates) {
-		clen = IEEE80211_MAX_SUPP_RATES - bss->supp_rates_len;
+		clen = IEEE80211_MAX_SUPP_RATES;
 		if (clen > elems->supp_rates_len)
 			clen = elems->supp_rates_len;
-		memcpy(&bss->supp_rates[bss->supp_rates_len], elems->supp_rates,
-		       clen);
-		bss->supp_rates_len += clen;
+		memcpy(bss->supp_rates, elems->supp_rates, clen);
+		srlen += clen;
 	}
 	if (elems->ext_supp_rates) {
-		clen = IEEE80211_MAX_SUPP_RATES - bss->supp_rates_len;
+		clen = IEEE80211_MAX_SUPP_RATES - srlen;
 		if (clen > elems->ext_supp_rates_len)
 			clen = elems->ext_supp_rates_len;
-		memcpy(&bss->supp_rates[bss->supp_rates_len],
-		       elems->ext_supp_rates, clen);
-		bss->supp_rates_len += clen;
+		memcpy(bss->supp_rates + srlen, elems->ext_supp_rates, clen);
+		srlen += clen;
 	}
+	if (srlen)
+		bss->supp_rates_len = srlen;
 
 	bss->wmm_used = elems->wmm_param || elems->wmm_info;
 
-- 
1.6.2.5

_______________________________________________
kernel mailing list
kernel at lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/kernel


mac80211-explicitly-disable-enable-QoS.patch:
 iwl-agn.c      |    9 ---
 iwl-core.c     |  147 ++++++---------------------------------------------------
 iwl-core.h     |    3 -
 iwl-dev.h      |   21 --------
 iwl3945-base.c |    8 ---
 5 files changed, 17 insertions(+), 171 deletions(-)

--- NEW FILE mac80211-explicitly-disable-enable-QoS.patch ---
From: Stanislaw Gruszka <sgruszka at redhat.com>
To: kernel at lists.fedoraproject.org, "John W. Linville" <linville at redhat.com>
Subject: [PATCH 2/4 2.6.32.y] iwlwifi: manage QoS by mac stack
Date: Fri, 11 Jun 2010 17:03:14 +0200

We activate/deactivate QoS and setup default queue parameters in iwlwifi
driver. Mac stack do the same, so we do not need repeat that work here.
Stack also will tell when disable QoS, this will fix driver when working
with older APs, that do not have QoS implemented.

Patch make "force = true" in iwl_active_qos() assuming we always want
to do with QoS what mac stack wish.

Patch also remove unused qos_cap bits, do not initialize qos_active = 0,
as we have it initialized to zero by kzalloc.

Signed-off-by: Stanislaw Gruszka <sgruszka at redhat.com>
---
 drivers/net/wireless/iwlwifi/iwl-agn.c      |    9 --
 drivers/net/wireless/iwlwifi/iwl-core.c     |  147 +++------------------------
 drivers/net/wireless/iwlwifi/iwl-core.h     |    3 +-
 drivers/net/wireless/iwlwifi/iwl-dev.h      |   21 ----
 drivers/net/wireless/iwlwifi/iwl3945-base.c |    7 --
 5 files changed, 17 insertions(+), 170 deletions(-)

diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c
index 921dc4a..b05f198 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
@@ -2172,7 +2172,6 @@ void iwl_post_associate(struct iwl_priv *priv)
 {
 	struct ieee80211_conf *conf = NULL;
 	int ret = 0;
-	unsigned long flags;
 
 	if (priv->iw_mode == NL80211_IFTYPE_AP) {
 		IWL_ERR(priv, "%s Should not be called in AP mode\n", __func__);
@@ -2257,10 +2256,6 @@ void iwl_post_associate(struct iwl_priv *priv)
 	if (priv->iw_mode == NL80211_IFTYPE_ADHOC)
 		priv->assoc_station_added = 1;
 
-	spin_lock_irqsave(&priv->lock, flags);
-	iwl_activate_qos(priv, 0);
-	spin_unlock_irqrestore(&priv->lock, flags);
-
 	/* the chain noise calibration will enabled PM upon completion
 	 * If chain noise has already been run, then we need to enable
 	 * power management here */
@@ -2384,7 +2379,6 @@ static int iwl_mac_tx(struct ieee80211_hw *hw, struct sk_buff *skb)
 void iwl_config_ap(struct iwl_priv *priv)
 {
 	int ret = 0;
-	unsigned long flags;
 
 	if (test_bit(STATUS_EXIT_PENDING, &priv->status))
 		return;
@@ -2432,9 +2426,6 @@ void iwl_config_ap(struct iwl_priv *priv)
 		/* restore RXON assoc */
 		priv->staging_rxon.filter_flags |= RXON_FILTER_ASSOC_MSK;
 		iwlcore_commit_rxon(priv);
-		spin_lock_irqsave(&priv->lock, flags);
-		iwl_activate_qos(priv, 1);
-		spin_unlock_irqrestore(&priv->lock, flags);
 		iwl_rxon_add_station(priv, iwl_bcast_addr, 0);
 	}
 	iwl_send_beacon_cmd(priv);
diff --git a/drivers/net/wireless/iwlwifi/iwl-core.c b/drivers/net/wireless/iwlwifi/iwl-core.c
index 4a4f7e4..6ce19ea 100644
--- a/drivers/net/wireless/iwlwifi/iwl-core.c
+++ b/drivers/net/wireless/iwlwifi/iwl-core.c
@@ -266,17 +266,13 @@ EXPORT_SYMBOL(iwl_hw_nic_init);
 /*
  * QoS  support
 */
-void iwl_activate_qos(struct iwl_priv *priv, u8 force)
+static void iwl_update_qos(struct iwl_priv *priv)
 {
 	if (test_bit(STATUS_EXIT_PENDING, &priv->status))
 		return;
 
 	priv->qos_data.def_qos_parm.qos_flags = 0;
 
-	if (priv->qos_data.qos_cap.q_AP.queue_request &&
-	    !priv->qos_data.qos_cap.q_AP.txop_request)
-		priv->qos_data.def_qos_parm.qos_flags |=
-			QOS_PARAM_FLG_TXOP_TYPE_MSK;
 	if (priv->qos_data.qos_active)
 		priv->qos_data.def_qos_parm.qos_flags |=
 			QOS_PARAM_FLG_UPDATE_EDCA_MSK;
@@ -284,118 +280,14 @@ void iwl_activate_qos(struct iwl_priv *priv, u8 force)
 	if (priv->current_ht_config.is_ht)
 		priv->qos_data.def_qos_parm.qos_flags |= QOS_PARAM_FLG_TGN_MSK;
 
-	if (force || iwl_is_associated(priv)) {
-		IWL_DEBUG_QOS(priv, "send QoS cmd with Qos active=%d FLAGS=0x%X\n",
-				priv->qos_data.qos_active,
-				priv->qos_data.def_qos_parm.qos_flags);
+	IWL_DEBUG_QOS(priv, "send QoS cmd with Qos active=%d FLAGS=0x%X\n",
+		      priv->qos_data.qos_active,
+		      priv->qos_data.def_qos_parm.qos_flags);
 
-		iwl_send_cmd_pdu_async(priv, REPLY_QOS_PARAM,
-				       sizeof(struct iwl_qosparam_cmd),
-				       &priv->qos_data.def_qos_parm, NULL);
-	}
+	iwl_send_cmd_pdu_async(priv, REPLY_QOS_PARAM,
+			       sizeof(struct iwl_qosparam_cmd),
+			       &priv->qos_data.def_qos_parm, NULL);
 }
-EXPORT_SYMBOL(iwl_activate_qos);
-
-/*
- * AC        CWmin         CW max      AIFSN      TXOP Limit    TXOP Limit
- *                                              (802.11b)      (802.11a/g)
- * AC_BK      15            1023        7           0               0
- * AC_BE      15            1023        3           0               0
- * AC_VI       7              15        2          6.016ms       3.008ms
- * AC_VO       3               7        2          3.264ms       1.504ms
- */
-void iwl_reset_qos(struct iwl_priv *priv)
-{
-	u16 cw_min = 15;
-	u16 cw_max = 1023;
-	u8 aifs = 2;
-	bool is_legacy = false;
-	unsigned long flags;
-	int i;
-
-	spin_lock_irqsave(&priv->lock, flags);
-	/* QoS always active in AP and ADHOC mode
-	 * In STA mode wait for association
-	 */
-	if (priv->iw_mode == NL80211_IFTYPE_ADHOC ||
-	    priv->iw_mode == NL80211_IFTYPE_AP)
-		priv->qos_data.qos_active = 1;
-	else
-		priv->qos_data.qos_active = 0;
-
-	/* check for legacy mode */
-	if ((priv->iw_mode == NL80211_IFTYPE_ADHOC &&
-	    (priv->active_rate & IWL_OFDM_RATES_MASK) == 0) ||
-	    (priv->iw_mode == NL80211_IFTYPE_STATION &&
-	    (priv->staging_rxon.flags & RXON_FLG_SHORT_SLOT_MSK) == 0)) {
-		cw_min = 31;
-		is_legacy = 1;
-	}
-
-	if (priv->qos_data.qos_active)
-		aifs = 3;
-
-	/* AC_BE */
-	priv->qos_data.def_qos_parm.ac[0].cw_min = cpu_to_le16(cw_min);
-	priv->qos_data.def_qos_parm.ac[0].cw_max = cpu_to_le16(cw_max);
-	priv->qos_data.def_qos_parm.ac[0].aifsn = aifs;
-	priv->qos_data.def_qos_parm.ac[0].edca_txop = 0;
-	priv->qos_data.def_qos_parm.ac[0].reserved1 = 0;
-
-	if (priv->qos_data.qos_active) {
-		/* AC_BK */
-		i = 1;
-		priv->qos_data.def_qos_parm.ac[i].cw_min = cpu_to_le16(cw_min);
-		priv->qos_data.def_qos_parm.ac[i].cw_max = cpu_to_le16(cw_max);
-		priv->qos_data.def_qos_parm.ac[i].aifsn = 7;
-		priv->qos_data.def_qos_parm.ac[i].edca_txop = 0;
-		priv->qos_data.def_qos_parm.ac[i].reserved1 = 0;
-
-		/* AC_VI */
-		i = 2;
-		priv->qos_data.def_qos_parm.ac[i].cw_min =
-			cpu_to_le16((cw_min + 1) / 2 - 1);
-		priv->qos_data.def_qos_parm.ac[i].cw_max =
-			cpu_to_le16(cw_min);
-		priv->qos_data.def_qos_parm.ac[i].aifsn = 2;
-		if (is_legacy)
-			priv->qos_data.def_qos_parm.ac[i].edca_txop =
-				cpu_to_le16(6016);
-		else
-			priv->qos_data.def_qos_parm.ac[i].edca_txop =
-				cpu_to_le16(3008);
-		priv->qos_data.def_qos_parm.ac[i].reserved1 = 0;
-
-		/* AC_VO */
-		i = 3;
-		priv->qos_data.def_qos_parm.ac[i].cw_min =
-			cpu_to_le16((cw_min + 1) / 4 - 1);
-		priv->qos_data.def_qos_parm.ac[i].cw_max =
-			cpu_to_le16((cw_min + 1) / 2 - 1);
-		priv->qos_data.def_qos_parm.ac[i].aifsn = 2;
-		priv->qos_data.def_qos_parm.ac[i].reserved1 = 0;
-		if (is_legacy)
-			priv->qos_data.def_qos_parm.ac[i].edca_txop =
-				cpu_to_le16(3264);
-		else
-			priv->qos_data.def_qos_parm.ac[i].edca_txop =
-				cpu_to_le16(1504);
-	} else {
-		for (i = 1; i < 4; i++) {
-			priv->qos_data.def_qos_parm.ac[i].cw_min =
-				cpu_to_le16(cw_min);
-			priv->qos_data.def_qos_parm.ac[i].cw_max =
-				cpu_to_le16(cw_max);
-			priv->qos_data.def_qos_parm.ac[i].aifsn = aifs;
-			priv->qos_data.def_qos_parm.ac[i].edca_txop = 0;
-			priv->qos_data.def_qos_parm.ac[i].reserved1 = 0;
-		}
-	}
-	IWL_DEBUG_QOS(priv, "set QoS to default \n");
-
-	spin_unlock_irqrestore(&priv->lock, flags);
-}
-EXPORT_SYMBOL(iwl_reset_qos);
 
 #define MAX_BIT_RATE_40_MHZ 150 /* Mbps */
 #define MAX_BIT_RATE_20_MHZ 72 /* Mbps */
@@ -1503,11 +1395,6 @@ int iwl_init_drv(struct iwl_priv *priv)
 
 	iwl_init_scan_params(priv);
 
-	iwl_reset_qos(priv);
-
-	priv->qos_data.qos_active = 0;
-	priv->qos_data.qos_cap.val = 0;
-
 	priv->rates_mask = IWL_RATES_MASK;
 	/* Set the tx_power_user_lmt to the lowest power level
 	 * this value will get overwritten by channel max power avg
@@ -2213,12 +2100,6 @@ int iwl_mac_conf_tx(struct ieee80211_hw *hw, u16 queue,
 			cpu_to_le16((params->txop * 32));
 
 	priv->qos_data.def_qos_parm.ac[q].reserved1 = 0;
-	priv->qos_data.qos_active = 1;
-
-	if (priv->iw_mode == NL80211_IFTYPE_AP)
-		iwl_activate_qos(priv, 1);
-	else if (priv->assoc_id && iwl_is_associated(priv))
-		iwl_activate_qos(priv, 0);
 
 	spin_unlock_irqrestore(&priv->lock, flags);
 
@@ -2452,11 +2333,8 @@ int iwl_mac_beacon_update(struct ieee80211_hw *hw, struct sk_buff *skb)
 	IWL_DEBUG_MAC80211(priv, "leave\n");
 	spin_unlock_irqrestore(&priv->lock, flags);
 
-	iwl_reset_qos(priv);
-
 	priv->cfg->ops->lib->post_associate(priv);
 
-
 	return 0;
 }
 EXPORT_SYMBOL(iwl_mac_beacon_update);
@@ -2674,6 +2552,15 @@ int iwl_mac_config(struct ieee80211_hw *hw, u32 changed)
 	if (priv->cfg->ops->hcmd->set_rxon_chain)
 		priv->cfg->ops->hcmd->set_rxon_chain(priv);
 
+	if (changed & IEEE80211_CONF_CHANGE_QOS) {
+		bool qos_active = !!(conf->flags & IEEE80211_CONF_QOS);
+
+		spin_lock_irqsave(&priv->lock, flags);
+		priv->qos_data.qos_active = qos_active;
+		iwl_update_qos(priv);
+		spin_unlock_irqrestore(&priv->lock, flags);
+	}
+
 	if (!iwl_is_ready(priv)) {
 		IWL_DEBUG_MAC80211(priv, "leave - not ready\n");
 		goto out;
@@ -2744,8 +2631,6 @@ void iwl_mac_reset_tsf(struct ieee80211_hw *hw)
 	memset(&priv->current_ht_config, 0, sizeof(struct iwl_ht_info));
 	spin_unlock_irqrestore(&priv->lock, flags);
 
-	iwl_reset_qos(priv);
-
 	spin_lock_irqsave(&priv->lock, flags);
 	priv->assoc_id = 0;
 	priv->assoc_capability = 0;
diff --git a/drivers/net/wireless/iwlwifi/iwl-core.h b/drivers/net/wireless/iwlwifi/iwl-core.h
index 40ec0c1..d5000c7 100644
--- a/drivers/net/wireless/iwlwifi/iwl-core.h
+++ b/drivers/net/wireless/iwlwifi/iwl-core.h
@@ -266,8 +266,7 @@ struct iwl_cfg {
 struct ieee80211_hw *iwl_alloc_all(struct iwl_cfg *cfg,
 		struct ieee80211_ops *hw_ops);
 void iwl_hw_detect(struct iwl_priv *priv);
-void iwl_reset_qos(struct iwl_priv *priv);
-void iwl_activate_qos(struct iwl_priv *priv, u8 force);
+void iwl_activate_qos(struct iwl_priv *priv);
 int iwl_mac_conf_tx(struct ieee80211_hw *hw, u16 queue,
 		    const struct ieee80211_tx_queue_params *params);
 void iwl_set_rxon_hwcrypto(struct iwl_priv *priv, int hw_decrypt);
diff --git a/drivers/net/wireless/iwlwifi/iwl-dev.h b/drivers/net/wireless/iwlwifi/iwl-dev.h
index cea2ee2..24faad7 100644
--- a/drivers/net/wireless/iwlwifi/iwl-dev.h
+++ b/drivers/net/wireless/iwlwifi/iwl-dev.h
@@ -514,30 +514,9 @@ struct iwl_ht_info {
 	u8 non_GF_STA_present;
 };
 
-union iwl_qos_capabity {
-	struct {
-		u8 edca_count:4;	/* bit 0-3 */
-		u8 q_ack:1;		/* bit 4 */
-		u8 queue_request:1;	/* bit 5 */
-		u8 txop_request:1;	/* bit 6 */
-		u8 reserved:1;		/* bit 7 */
-	} q_AP;
-	struct {
-		u8 acvo_APSD:1;		/* bit 0 */
-		u8 acvi_APSD:1;		/* bit 1 */
-		u8 ac_bk_APSD:1;	/* bit 2 */
-		u8 ac_be_APSD:1;	/* bit 3 */
-		u8 q_ack:1;		/* bit 4 */
-		u8 max_len:2;		/* bit 5-6 */
-		u8 more_data_ack:1;	/* bit 7 */
-	} q_STA;
-	u8 val;
-};
-
 /* QoS structures */
 struct iwl_qos_info {
 	int qos_active;
-	union iwl_qos_capabity qos_cap;
 	struct iwl_qosparam_cmd def_qos_parm;
 };
 
diff --git a/drivers/net/wireless/iwlwifi/iwl3945-base.c b/drivers/net/wireless/iwlwifi/iwl3945-base.c
index 619590d..95447ca 100644
--- a/drivers/net/wireless/iwlwifi/iwl3945-base.c
+++ b/drivers/net/wireless/iwlwifi/iwl3945-base.c
@@ -3091,8 +3091,6 @@ void iwl3945_post_associate(struct iwl_priv *priv)
 		break;
 	}
 
-	iwl_activate_qos(priv, 0);
-
 	/* we have just associated, don't start scan too early */
 	priv->next_scan_jiffies = jiffies + IWL_DELAY_NEXT_SCAN;
 }
@@ -3805,11 +3803,6 @@ static int iwl3945_init_drv(struct iwl_priv *priv)
 
 	priv->iw_mode = NL80211_IFTYPE_STATION;
 
-	iwl_reset_qos(priv);
-
-	priv->qos_data.qos_active = 0;
-	priv->qos_data.qos_cap.val = 0;
-
 	priv->rates_mask = IWL_RATES_MASK;
 	priv->tx_power_user_lmt = IWL_DEFAULT_TX_POWER;
 
-- 
1.6.2.5

_______________________________________________
kernel mailing list
kernel at lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/kernel


mac80211-fix-supported-rates-IE-if-AP-doesnt-give-us-its-rates.patch:
 mlme.c |   18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)

--- NEW FILE mac80211-fix-supported-rates-IE-if-AP-doesnt-give-us-its-rates.patch ---
From: Stanislaw Gruszka <sgruszka at redhat.com>
To: kernel at lists.fedoraproject.org, "John W. Linville" <linville at redhat.com>
Subject: [PATCH 4/4 2.6.32.y] mac80211: fix supported rates IE if AP doesn't
	give us it's rates
Date: Fri, 11 Jun 2010 17:03:16 +0200

If AP do not provide us supported rates before assiociation, send
all rates we are supporting instead of empty information element.

Signed-off-by: Stanislaw Gruszka <sgruszka at redhat.com>
---
 net/mac80211/mlme.c |   17 +++++++++++------
 1 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
index d3950b7..abd62fc 100644
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -269,12 +269,6 @@ static void ieee80211_send_assoc(struct ieee80211_sub_if_data *sdata,
 	if (wk->bss->wmm_used)
 		wmm = 1;
 
-	/* get all rates supported by the device and the AP as
-	 * some APs don't like getting a superset of their rates
-	 * in the association request (e.g. D-Link DAP 1353 in
-	 * b-only mode) */
-	rates_len = ieee80211_compatible_rates(wk->bss, sband, &rates);
-
 	if ((wk->bss->cbss.capability & WLAN_CAPABILITY_SPECTRUM_MGMT) &&
 	    (local->hw.flags & IEEE80211_HW_SPECTRUM_MGMT))
 		capab |= WLAN_CAPABILITY_SPECTRUM_MGMT;
@@ -309,6 +303,17 @@ static void ieee80211_send_assoc(struct ieee80211_sub_if_data *sdata,
 	*pos++ = wk->ssid_len;
 	memcpy(pos, wk->ssid, wk->ssid_len);
 
+	if (wk->bss->supp_rates_len) {
+		/* get all rates supported by the device and the AP as
+		 * some APs don't like getting a superset of their rates
+		 * in the association request (e.g. D-Link DAP 1353 in
+		 * b-only mode) */
+		rates_len = ieee80211_compatible_rates(wk->bss, sband, &rates);
+	} else {
+		rates = ~0;
+		rates_len = sband->n_bitrates;
+	}
+
 	/* add all rates which were marked to be used above */
 	supp_rates_len = rates_len;
 	if (supp_rates_len > 8)
-- 
1.6.2.5

_______________________________________________
kernel mailing list
kernel at lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/kernel



Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/kernel.spec,v
retrieving revision 1.1294.2.106
retrieving revision 1.1294.2.107
diff -u -p -r1.1294.2.106 -r1.1294.2.107
--- kernel.spec	5 Jun 2010 21:52:55 -0000	1.1294.2.106
+++ kernel.spec	16 Jun 2010 19:13:53 -0000	1.1294.2.107
@@ -766,6 +766,9 @@ Patch3051: linux-2.6-nfs4-callback-hidde
 
 # btrfs
 Patch3100: linux-2.6-btrfs-fix-acl.patch
+Patch3101: btrfs-prohibit-a-operation-of-changing-acls-mask-when-noacl-mount-option-is-used.patch
+Patch3102: btrfs-should-add-permission-check-for-setfacl.patch
+
 
 # XFS
 
@@ -829,12 +832,20 @@ Patch12912: iwlwifi-recover_from_tx_stal
 # iwlwifi: recalculate average tpt if not current
 Patch12920: iwlwifi-recalculate-average-tpt-if-not-current.patch
 
+Patch12921: iwlwifi-manage-QoS-by-mac-stack.patch
+Patch12922: mac80211-do-not-wipe-out-old-supported-rates.patch
+Patch12923: mac80211-explicitly-disable-enable-QoS.patch
+Patch12924: mac80211-fix-supported-rates-IE-if-AP-doesnt-give-us-its-rates.patch
+
 # CVE-2010-1437
 Patch13000: keys-find-keyring-by-name-can-gain-access-to-the-freed-keyring.patch
 
 # iwlwifi: update supported PCI_ID list for 5xx0 series
 Patch13010: iwlwifi-update-supported-PCI_ID-list-for-5xx0-series.patch
 
+# iwlwifi: cancel scan watchdog in iwl_bg_abort_scan
+Patch13020: iwlwifi-cancel-scan-watchdog-in-iwl_bg_abort_scan.patch
+
 Patch19997: xen.pvops.pre.patch
 Patch19998: xen.pvops.patch
 Patch19999: xen.pvops.post.patch
@@ -1308,6 +1319,9 @@ ApplyPatch linux-2.6-execshield.patch
 
 # btrfs
 ApplyPatch linux-2.6-btrfs-fix-acl.patch
+ApplyPatch btrfs-should-add-permission-check-for-setfacl.patch
+ApplyPatch btrfs-prohibit-a-operation-of-changing-acls-mask-when-noacl-mount-option-is-used.patch
+
 
 # eCryptfs
 
@@ -1520,12 +1534,21 @@ ApplyPatch iwlwifi-recover_from_tx_stall
 # iwlwifi: recalculate average tpt if not current
 ApplyPatch iwlwifi-recalculate-average-tpt-if-not-current.patch
 
+# mac80211/iwlwifi fix connections to some APs (rhbz#558002)
+ApplyPatch mac80211-explicitly-disable-enable-QoS.patch
+ApplyPatch iwlwifi-manage-QoS-by-mac-stack.patch
+ApplyPatch mac80211-do-not-wipe-out-old-supported-rates.patch
+ApplyPatch mac80211-fix-supported-rates-IE-if-AP-doesnt-give-us-its-rates.patch
+
 # CVE-2010-1437
 ApplyPatch keys-find-keyring-by-name-can-gain-access-to-the-freed-keyring.patch
 
 # iwlwifi: update supported PCI_ID list for 5xx0 series
 ApplyPatch iwlwifi-update-supported-PCI_ID-list-for-5xx0-series.patch
 
+# iwlwifi: cancel scan watchdog in iwl_bg_abort_scan
+ApplyPatch iwlwifi-cancel-scan-watchdog-in-iwl_bg_abort_scan.patch
+
 ApplyPatch xen.pvops.pre.patch
 ApplyPatch xen.pvops.patch
 ApplyPatch xen.pvops.post.patch
@@ -2184,6 +2207,25 @@ fi
 
 
 %changelog
+* Wed Jun 16 2010 Michael Young <m.a.young at durham.ac.uk>
+- update pvops
+- undo balloning patch as it is upstream in xen
+
+* Tue Jun 15 2010 Kyle McMartin <kyle at redhat.com>  2.6.32.14-134
+- Fix btrfs ACL fixes... commit 431547b3c4533b8c7fd150ab36980b9a3147797b
+  changed them to take a struct dentry instead of struct inode after
+  2.6.32.
+
+* Tue Jun 15 2010 John W. Linville <linville at redhat.com> 2.6.32.14-133
+- iwlwifi: cancel scan watchdog in iwl_bg_abort_scan (#604264)
+
+* Mon Jun 14 2010 Kyle McMartin <kyle at redhat.com> 2.6.32.14-132
+- Add in ACL fixes to btrfs from CVE-2010-2071.
+
+* Sun Jun 13 2010 Kyle McMartin <kyle at redhat.com> 2.6.32.14-131
+- mac80211/iwlwifi fix connections to some APs (rhbz#558002)
+  patches from sgruszka at .
+
 * Sat Jun  5 2010 Michael Young <m.a.young at durham.ac.uk>
 - update pvops (only change is 2.6.32.14 -> 2.6.32.15)
 - try a ballooning patch

xen.pvops.patch:
 Documentation/x86/x86_64/boot-options.txt       |    6 
 Makefile                                        |    2 
 arch/ia64/include/asm/dma-mapping.h             |    2 
 arch/ia64/include/asm/swiotlb.h                 |    2 
 arch/ia64/include/asm/xen/events.h              |    4 
 arch/ia64/kernel/pci-swiotlb.c                  |    4 
 arch/powerpc/include/asm/dma-mapping.h          |    2 
 arch/powerpc/kernel/setup_32.c                  |    2 
 arch/powerpc/kernel/setup_64.c                  |    2 
 arch/x86/Kconfig                                |    4 
 arch/x86/include/asm/amd_iommu.h                |    4 
 arch/x86/include/asm/calgary.h                  |    2 
 arch/x86/include/asm/dma-mapping.h              |    7 
 arch/x86/include/asm/gart.h                     |    9 
 arch/x86/include/asm/hpet.h                     |    2 
 arch/x86/include/asm/hugetlb.h                  |   30 
 arch/x86/include/asm/io.h                       |   15 
 arch/x86/include/asm/io_apic.h                  |    3 
 arch/x86/include/asm/iommu.h                    |    2 
 arch/x86/include/asm/irq_vectors.h              |   14 
 arch/x86/include/asm/microcode.h                |    9 
 arch/x86/include/asm/mmu.h                      |    3 
 arch/x86/include/asm/paravirt.h                 |    7 
 arch/x86/include/asm/paravirt_types.h           |    2 
 arch/x86/include/asm/pci.h                      |    8 
 arch/x86/include/asm/pci_x86.h                  |    2 
 arch/x86/include/asm/pgtable.h                  |    6 
 arch/x86/include/asm/pgtable_64.h               |    2 
 arch/x86/include/asm/processor.h                |    4 
 arch/x86/include/asm/swiotlb.h                  |   11 
 arch/x86/include/asm/syscalls.h                 |    8 
 arch/x86/include/asm/tlbflush.h                 |    6 
 arch/x86/include/asm/x86_init.h                 |   10 
 arch/x86/include/asm/xen/hypercall.h            |   50 
 arch/x86/include/asm/xen/hypervisor.h           |   25 
 arch/x86/include/asm/xen/interface.h            |    8 
 arch/x86/include/asm/xen/interface_32.h         |    5 
 arch/x86/include/asm/xen/interface_64.h         |   13 
 arch/x86/include/asm/xen/iommu.h                |   12 
 arch/x86/include/asm/xen/page.h                 |   16 
 arch/x86/include/asm/xen/pci.h                  |  104 +
 arch/x86/include/asm/xen/swiotlb-xen.h          |   14 
 arch/x86/kernel/Makefile                        |    1 
 arch/x86/kernel/acpi/boot.c                     |   21 
 arch/x86/kernel/acpi/processor.c                |   17 
 arch/x86/kernel/acpi/sleep.c                    |    2 
 arch/x86/kernel/amd_iommu.c                     |   23 
 arch/x86/kernel/amd_iommu_init.c                |   25 
 arch/x86/kernel/aperture_64.c                   |    4 
 arch/x86/kernel/apic/io_apic.c                  |   53 
 arch/x86/kernel/cpu/mtrr/Makefile               |    1 
 arch/x86/kernel/cpu/mtrr/amd.c                  |    6 
 arch/x86/kernel/cpu/mtrr/centaur.c              |    6 
 arch/x86/kernel/cpu/mtrr/cyrix.c                |    6 
 arch/x86/kernel/cpu/mtrr/generic.c              |   13 
 arch/x86/kernel/cpu/mtrr/main.c                 |   20 
 arch/x86/kernel/cpu/mtrr/mtrr.h                 |   11 
 arch/x86/kernel/cpu/mtrr/xen.c                  |  109 +
 arch/x86/kernel/crash.c                         |    1 
 arch/x86/kernel/hpet.c                          |    2 
 arch/x86/kernel/ioport.c                        |   40 
 arch/x86/kernel/ldt.c                           |    3 
 arch/x86/kernel/microcode_core.c                |    6 
 arch/x86/kernel/microcode_xen.c                 |  201 ++
 arch/x86/kernel/paravirt.c                      |    1 
 arch/x86/kernel/pci-calgary_64.c                |   73 
 arch/x86/kernel/pci-dma.c                       |   38 
 arch/x86/kernel/pci-gart_64.c                   |   40 
 arch/x86/kernel/pci-nommu.c                     |   11 
 arch/x86/kernel/pci-swiotlb.c                   |   21 
 arch/x86/kernel/process.c                       |   27 
 arch/x86/kernel/reboot.c                        |    4 
 arch/x86/kernel/setup.c                         |    6 
 arch/x86/kernel/x86_init.c                      |    8 
 arch/x86/mm/Makefile                            |    5 
 arch/x86/mm/gup.c                               |    5 
 arch/x86/mm/pat.c                               |    2 
 arch/x86/mm/pgtable.c                           |   19 
 arch/x86/mm/tlb.c                               |   37 
 arch/x86/pci/Makefile                           |    1 
 arch/x86/pci/common.c                           |   18 
 arch/x86/pci/i386.c                             |    2 
 arch/x86/pci/init.c                             |    6 
 arch/x86/pci/xen.c                              |  154 +
 arch/x86/xen/Kconfig                            |   37 
 arch/x86/xen/Makefile                           |    5 
 arch/x86/xen/apic.c                             |   33 
 arch/x86/xen/enlighten.c                        |  254 +++
 arch/x86/xen/mmu.c                              |  527 ++++++
 arch/x86/xen/pci-swiotlb-xen.c                  |   52 
 arch/x86/xen/pci.c                              |  296 +++
 arch/x86/xen/setup.c                            |  125 +
 arch/x86/xen/smp.c                              |    9 
 arch/x86/xen/suspend.c                          |    4 
 arch/x86/xen/time.c                             |   16 
 arch/x86/xen/vga.c                              |   67 
 arch/x86/xen/xen-ops.h                          |   20 
 block/blk-core.c                                |    2 
 drivers/acpi/Makefile                           |    1 
 drivers/acpi/acpi_memhotplug.c                  |   19 
 drivers/acpi/acpica/hwsleep.c                   |   16 
 drivers/acpi/processor_core.c                   |   35 
 drivers/acpi/processor_idle.c                   |   20 
 drivers/acpi/processor_perflib.c                |    4 
 drivers/acpi/processor_xen.c                    |  616 +++++++
 drivers/acpi/sleep.c                            |   19 
 drivers/block/Kconfig                           |    1 
 drivers/block/xen-blkfront.c                    |  346 +++-
 drivers/char/agp/intel-agp.c                    |   23 
 drivers/char/hvc_xen.c                          |  101 -
 drivers/gpu/drm/drm_drv.c                       |    2 
 drivers/gpu/drm/drm_gem.c                       |    2 
 drivers/gpu/drm/drm_scatter.c                   |   67 
 drivers/gpu/drm/ttm/ttm_bo_vm.c                 |    2 
 drivers/input/xen-kbdfront.c                    |    7 
 drivers/net/Kconfig                             |    1 
 drivers/net/xen-netfront.c                      |   11 
 drivers/pci/Kconfig                             |   10 
 drivers/pci/Makefile                            |    4 
 drivers/pci/bus.c                               |    1 
 drivers/pci/dmar.c                              |    7 
 drivers/pci/intel-iommu.c                       |    6 
 drivers/pci/msi.c                               |   17 
 drivers/pci/xen-iommu.c                         |  271 +++
 drivers/pci/xen-pcifront.c                      | 1156 ++++++++++++++
 drivers/video/Kconfig                           |    1 
 drivers/video/broadsheetfb.c                    |    2 
 drivers/video/fb_defio.c                        |    4 
 drivers/video/hecubafb.c                        |    2 
 drivers/video/metronomefb.c                     |    2 
 drivers/video/xen-fbfront.c                     |    9 
 drivers/xen/Kconfig                             |  138 +
 drivers/xen/Makefile                            |   29 
 drivers/xen/acpi.c                              |   23 
 drivers/xen/acpi_processor.c                    |  417 +++++
 drivers/xen/balloon.c                           |  268 ++-
 drivers/xen/biomerge.c                          |   14 
 drivers/xen/blkback/Makefile                    |    4 
 drivers/xen/blkback/blkback-pagemap.c           |  109 +
 drivers/xen/blkback/blkback-pagemap.h           |   36 
 drivers/xen/blkback/blkback.c                   |  675 ++++++++
 drivers/xen/blkback/common.h                    |  143 +
 drivers/xen/blkback/interface.c                 |  186 ++
 drivers/xen/blkback/vbd.c                       |  161 ++
 drivers/xen/blkback/xenbus.c                    |  546 +++++++
 drivers/xen/blktap/Makefile                     |    3 
 drivers/xen/blktap/blktap.h                     |  231 ++
 drivers/xen/blktap/control.c                    |  266 +++
 drivers/xen/blktap/device.c                     |  931 +++++++++++
 drivers/xen/blktap/request.c                    |  295 +++
 drivers/xen/blktap/ring.c                       |  477 ++++++
 drivers/xen/blktap/sysfs.c                      |  312 ++++
 drivers/xen/cpu_hotplug.c                       |    1 
 drivers/xen/events.c                            |  529 ++++++
 drivers/xen/evtchn.c                            |   96 -
 drivers/xen/features.c                          |    2 
 drivers/xen/gntdev.c                            |  645 ++++++++
 drivers/xen/grant-table.c                       |  176 ++
 drivers/xen/manage.c                            |  103 +
 drivers/xen/mce.c                               |  216 ++
 drivers/xen/netback/Makefile                    |    3 
 drivers/xen/netback/common.h                    |  326 ++++
 drivers/xen/netback/interface.c                 |  437 +++++
 drivers/xen/netback/netback.c                   | 1869 ++++++++++++++++++++++++
 drivers/xen/netback/xenbus.c                    |  528 ++++++
 drivers/xen/pci.c                               |  124 +
 drivers/xen/pciback/Makefile                    |   17 
 drivers/xen/pciback/conf_space.c                |  435 +++++
 drivers/xen/pciback/conf_space.h                |  126 +
 drivers/xen/pciback/conf_space_capability.c     |   66 
 drivers/xen/pciback/conf_space_capability.h     |   26 
 drivers/xen/pciback/conf_space_capability_msi.c |  110 +
 drivers/xen/pciback/conf_space_capability_pm.c  |  113 +
 drivers/xen/pciback/conf_space_capability_vpd.c |   40 
 drivers/xen/pciback/conf_space_header.c         |  385 ++++
 drivers/xen/pciback/conf_space_quirks.c         |  140 +
 drivers/xen/pciback/conf_space_quirks.h         |   35 
 drivers/xen/pciback/controller.c                |  442 +++++
 drivers/xen/pciback/passthrough.c               |  178 ++
 drivers/xen/pciback/pci_stub.c                  | 1370 +++++++++++++++++
 drivers/xen/pciback/pciback.h                   |  142 +
 drivers/xen/pciback/pciback_ops.c               |  242 +++
 drivers/xen/pciback/slot.c                      |  191 ++
 drivers/xen/pciback/vpci.c                      |  244 +++
 drivers/xen/pciback/xenbus.c                    |  722 +++++++++
 drivers/xen/pcpu.c                              |  420 +++++
 drivers/xen/platform-pci.c                      |  259 +++
 drivers/xen/sys-hypervisor.c                    |    1 
 drivers/xen/xen_acpi_memhotplug.c               |  209 ++
 drivers/xen/xenbus/Makefile                     |    5 
 drivers/xen/xenbus/xenbus_client.c              |   92 -
 drivers/xen/xenbus/xenbus_probe.c               |  409 +----
 drivers/xen/xenbus/xenbus_probe.h               |   29 
 drivers/xen/xenbus/xenbus_probe_backend.c       |  293 +++
 drivers/xen/xenbus/xenbus_probe_frontend.c      |  314 ++++
 drivers/xen/xenbus/xenbus_xs.c                  |   57 
 drivers/xen/xenfs/Makefile                      |    3 
 drivers/xen/xenfs/privcmd.c                     |  404 +++++
 drivers/xen/xenfs/super.c                       |  100 +
 drivers/xen/xenfs/xenfs.h                       |    3 
 drivers/xen/xenfs/xenstored.c                   |   67 
 include/acpi/acpi_drivers.h                     |   21 
 include/acpi/processor.h                        |   22 
 include/asm-generic/pci.h                       |    2 
 include/drm/drmP.h                              |    2 
 include/linux/bootmem.h                         |    1 
 include/linux/dmar.h                            |   15 
 include/linux/fb.h                              |    1 
 include/linux/interrupt.h                       |    1 
 include/linux/mm.h                              |   11 
 include/linux/page-flags.h                      |   20 
 include/linux/swiotlb.h                         |  115 +
 include/linux/vmalloc.h                         |    2 
 include/xen/Kbuild                              |    1 
 include/xen/acpi.h                              |  106 +
 include/xen/balloon.h                           |    8 
 include/xen/blkif.h                             |  123 +
 include/xen/events.h                            |   40 
 include/xen/gntdev.h                            |  119 +
 include/xen/grant_table.h                       |   44 
 include/xen/hvm.h                               |   32 
 include/xen/interface/features.h                |    3 
 include/xen/interface/grant_table.h             |   23 
 include/xen/interface/hvm/hvm_op.h              |   72 
 include/xen/interface/hvm/params.h              |  112 +
 include/xen/interface/io/pciif.h                |  124 +
 include/xen/interface/io/ring.h                 |    3 
 include/xen/interface/io/xenbus.h               |    8 
 include/xen/interface/memory.h                  |   92 +
 include/xen/interface/physdev.h                 |   68 
 include/xen/interface/platform.h                |  381 ++++
 include/xen/interface/platform_pci.h            |   45 
 include/xen/interface/xen-mca.h                 |  429 +++++
 include/xen/interface/xen.h                     |   45 
 include/xen/pcpu.h                              |   30 
 include/xen/platform_pci.h                      |   47 
 include/xen/privcmd.h                           |   80 +
 include/xen/xen-ops.h                           |   13 
 include/xen/xen.h                               |   32 
 include/xen/xenbus.h                            |    3 
 kernel/irq/manage.c                             |    3 
 kernel/lockdep.c                                |    6 
 kernel/module.c                                 |    2 
 lib/Makefile                                    |    3 
 lib/swiotlb-core.c                              |  572 +++++++
 lib/swiotlb-xen.c                               |  504 ++++++
 lib/swiotlb.c                                   |  551 -------
 mm/bootmem.c                                    |   24 
 mm/memory.c                                     |   43 
 mm/page_alloc.c                                 |   14 
 mm/vmalloc.c                                    |    7 
 251 files changed, 26179 insertions(+), 1578 deletions(-)

View full diff with command:
/usr/bin/cvs -n -f diff -kk -u -p -N -r 1.1.2.69 -r 1.1.2.70 xen.pvops.patchIndex: xen.pvops.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/Attic/xen.pvops.patch,v
retrieving revision 1.1.2.69
retrieving revision 1.1.2.70
diff -u -p -r1.1.2.69 -r1.1.2.70
--- xen.pvops.patch	5 Jun 2010 21:52:56 -0000	1.1.2.69
+++ xen.pvops.patch	16 Jun 2010 19:13:55 -0000	1.1.2.70
@@ -268,7 +268,7 @@ index 3251e23..fa152cb 100644
  #define hpet_readl(a) 0
  
 diff --git a/arch/x86/include/asm/hugetlb.h b/arch/x86/include/asm/hugetlb.h
-index 439a9ac..4cfd4de 100644
+index 439a9ac..5fbbe4b 100644
 --- a/arch/x86/include/asm/hugetlb.h
 +++ b/arch/x86/include/asm/hugetlb.h
 @@ -36,16 +36,24 @@ static inline void hugetlb_free_pgd_range(struct mmu_gather *tlb,
@@ -284,7 +284,7 @@ index 439a9ac..4cfd4de 100644
  				   pte_t *ptep, pte_t pte)
  {
 -	set_pte_at(mm, addr, ptep, pte);
-+	set_pmd((pmd_t *)ptep, __pmd(pte_val(pte)));
++	set_pmd((pmd_t *)ptep, native_make_pmd(native_pte_val(pte)));
  }
  
  static inline pte_t huge_ptep_get_and_clear(struct mm_struct *mm,
@@ -9633,7 +9633,7 @@ index 0000000..77be04b
 +subsys_initcall(xen_acpi_processor_extcntl_init);
 +MODULE_LICENSE("GPL");
 diff --git a/drivers/xen/balloon.c b/drivers/xen/balloon.c
-index 4204336..d7c0eae 100644
+index 4204336..a5ac75b 100644
 --- a/drivers/xen/balloon.c
 +++ b/drivers/xen/balloon.c
 @@ -43,6 +43,7 @@
@@ -9803,8 +9803,9 @@ index 4204336..d7c0eae 100644
  static int decrease_reservation(unsigned long nr_pages)
  {
 -	unsigned long  pfn, i, flags;
+-	struct page   *page;
 +	unsigned long  pfn, lpfn, mfn, i, j, flags;
- 	struct page   *page;
++	struct page   *page = NULL;
  	int            need_sleep = 0;
 -	int ret;
 +	int		discontig, discontig_free;
@@ -9824,7 +9825,7 @@ index 4204336..d7c0eae 100644
  			nr_pages = i;
  			need_sleep = 1;
  			break;
-@@ -282,37 +321,50 @@ static int decrease_reservation(unsigned long nr_pages)
+@@ -282,37 +321,52 @@ static int decrease_reservation(unsigned long nr_pages)
  		frame_list[i] = pfn_to_mfn(pfn);
  
  		scrub_page(page);
@@ -9858,6 +9859,8 @@ index 4204336..d7c0eae 100644
 +				discontig_free = 1;
 +
 +			set_phys_to_machine(lpfn, INVALID_P2M_ENTRY);
++                        page = pfn_to_page(lpfn);
++
 +			if (!PageHighMem(page)) {
 +				ret = HYPERVISOR_update_va_mapping(
 +					(unsigned long)__va(lpfn << PAGE_SHIFT),
@@ -9889,7 +9892,7 @@ index 4204336..d7c0eae 100644
  
  	return need_sleep;
  }
-@@ -379,7 +431,7 @@ static void watch_target(struct xenbus_watch *watch,
+@@ -379,7 +433,7 @@ static void watch_target(struct xenbus_watch *watch,
  	/* The given memory/target value is in KiB, so it needs converting to
  	 * pages. PAGE_SHIFT converts bytes to pages, hence PAGE_SHIFT - 10.
  	 */
@@ -9898,22 +9901,22 @@ index 4204336..d7c0eae 100644
  }
  
  static int balloon_init_watcher(struct notifier_block *notifier,
-@@ -405,9 +457,12 @@ static int __init balloon_init(void)
+@@ -405,9 +459,12 @@ static int __init balloon_init(void)
  	if (!xen_pv_domain())
  		return -ENODEV;
  
 -	pr_info("xen_balloon: Initialising balloon driver.\n");
 +	pr_info("xen_balloon: Initialising balloon driver with page order %d.\n",
 +		balloon_order);
-+
-+	balloon_npages = 1 << balloon_order;
  
 -	balloon_stats.current_pages = min(xen_start_info->nr_pages, max_pfn);
++	balloon_npages = 1 << balloon_order;
++
 +	balloon_stats.current_pages = (min(xen_start_info->nr_pages, max_pfn)) >> balloon_order;
  	balloon_stats.target_pages  = balloon_stats.current_pages;
  	balloon_stats.balloon_low   = 0;
  	balloon_stats.balloon_high  = 0;
-@@ -420,7 +475,7 @@ static int __init balloon_init(void)
+@@ -420,7 +477,7 @@ static int __init balloon_init(void)
  	register_balloon(&balloon_sysdev);
  
  	/* Initialise the balloon with excess memory space. */
@@ -9922,7 +9925,7 @@ index 4204336..d7c0eae 100644
  		page = pfn_to_page(pfn);
  		if (!PageReserved(page))
  			balloon_append(page);
-@@ -444,6 +499,121 @@ static void balloon_exit(void)
+@@ -444,6 +501,121 @@ static void balloon_exit(void)
  
  module_exit(balloon_exit);
  
@@ -10044,7 +10047,7 @@ index 4204336..d7c0eae 100644
  #define BALLOON_SHOW(name, format, args...)				\
  	static ssize_t show_##name(struct sys_device *dev,		\
  				   struct sysdev_attribute *attr,	\
-@@ -477,7 +647,7 @@ static ssize_t store_target_kb(struct sys_device *dev,
+@@ -477,7 +649,7 @@ static ssize_t store_target_kb(struct sys_device *dev,
  
  	target_bytes = simple_strtoull(buf, &endchar, 0) * 1024;
  
@@ -10053,7 +10056,7 @@ index 4204336..d7c0eae 100644
  
  	return count;
  }
-@@ -491,7 +661,7 @@ static ssize_t show_target(struct sys_device *dev, struct sysdev_attribute *attr
+@@ -491,7 +663,7 @@ static ssize_t show_target(struct sys_device *dev, struct sysdev_attribute *attr
  {
  	return sprintf(buf, "%llu\n",
  		       (unsigned long long)balloon_stats.target_pages
@@ -10062,7 +10065,7 @@ index 4204336..d7c0eae 100644
  }
  
  static ssize_t store_target(struct sys_device *dev,
-@@ -507,7 +677,7 @@ static ssize_t store_target(struct sys_device *dev,
+@@ -507,7 +679,7 @@ static ssize_t store_target(struct sys_device *dev,
  
  	target_bytes = memparse(buf, &endchar);
  
@@ -12001,19 +12004,19 @@ index 0000000..c31e5c4
 +}
 diff --git a/drivers/xen/blktap/Makefile b/drivers/xen/blktap/Makefile
 new file mode 100644
-index 0000000..99ff53c
+index 0000000..822b4e4
 --- /dev/null
 +++ b/drivers/xen/blktap/Makefile
 @@ -0,0 +1,3 @@
 +obj-$(CONFIG_XEN_BLKDEV_TAP) := blktap.o
 +
-+blktap-objs := control.o ring.o wait_queue.o device.o request.o sysfs.o
++blktap-objs := control.o ring.o device.o request.o sysfs.o
 diff --git a/drivers/xen/blktap/blktap.h b/drivers/xen/blktap/blktap.h
 new file mode 100644
-index 0000000..db4cf02
+index 0000000..33603cd
 --- /dev/null
 +++ b/drivers/xen/blktap/blktap.h
-@@ -0,0 +1,253 @@
+@@ -0,0 +1,231 @@
 +#ifndef _BLKTAP_H_
 +#define _BLKTAP_H_
 +
@@ -12025,8 +12028,6 @@ index 0000000..db4cf02
 +#include <xen/blkif.h>
 +#include <xen/grant_table.h>
 +
-+//#define ENABLE_PASSTHROUGH
-+
 +extern int blktap_debug_level;
 +
 +#define BTPRINTK(level, tag, force, _f, _a...)				\
@@ -12047,26 +12048,17 @@ index 0000000..db4cf02
 +#define BLKTAP_RING_FD               2
 +#define BLKTAP_RING_VMA              3
 +#define BLKTAP_DEVICE                4
-+#define BLKTAP_PAUSE_REQUESTED       6
-+#define BLKTAP_PAUSED                7
 +#define BLKTAP_SHUTDOWN_REQUESTED    8
 +#define BLKTAP_PASSTHROUGH           9
-+#define BLKTAP_DEFERRED              10
 +
 +/* blktap IOCTLs: */
 +#define BLKTAP2_IOCTL_KICK_FE        1
 +#define BLKTAP2_IOCTL_ALLOC_TAP	     200
 +#define BLKTAP2_IOCTL_FREE_TAP       201
 +#define BLKTAP2_IOCTL_CREATE_DEVICE  202
-+#define BLKTAP2_IOCTL_SET_PARAMS     203
-+#define BLKTAP2_IOCTL_PAUSE          204
-+#define BLKTAP2_IOCTL_REOPEN         205
-+#define BLKTAP2_IOCTL_RESUME         206
 +
 +#define BLKTAP2_MAX_MESSAGE_LEN      256
 +
-+#define BLKTAP2_RING_MESSAGE_PAUSE   1
-+#define BLKTAP2_RING_MESSAGE_RESUME  2
 +#define BLKTAP2_RING_MESSAGE_CLOSE   3
 +
 +#define BLKTAP_REQUEST_FREE          0
@@ -12137,8 +12129,6 @@ index 0000000..db4cf02
 +	unsigned long                  ring_vstart;
 +	unsigned long                  user_vstart;
 +
[...2162 lines suppressed...]
++			flags = 0;
++		else
++			flags = NETRXF_more_data;
 +		if (skb->ip_summed == CHECKSUM_PARTIAL) /* local packet? */
 +			flags |= NETRXF_csum_blank | NETRXF_data_validated;
 +		else if (skb->ip_summed == CHECKSUM_UNNECESSARY)
@@ -18653,10 +18264,12 @@ index 0000000..b23fab0
 +			flags |= NETRXF_data_validated;
 +
 +		offset = 0;
-+		resp = make_rx_response(netif, id, status, offset,
-+					skb_headlen(skb), flags);
++		resp = make_rx_response(netif, netbk->meta[npo.meta_cons].id,
++					status, offset,
++					netbk->meta[npo.meta_cons].size,
++					flags);
 +
-+		if (netbk->meta[npo.meta_cons].frag.size) {
++		if (netbk->meta[npo.meta_cons].gso_size) {
 +			struct xen_netif_extra_info *gso =
 +				(struct xen_netif_extra_info *)
 +				RING_GET_RESPONSE(&netif->rx,
@@ -18664,7 +18277,7 @@ index 0000000..b23fab0
 +
 +			resp->flags |= NETRXF_extra_info;
 +
-+			gso->u.gso.size = netbk->meta[npo.meta_cons].frag.size;
++			gso->u.gso.size = netbk->meta[npo.meta_cons].gso_size;
 +			gso->u.gso.type = XEN_NETIF_GSO_TYPE_TCPV4;
 +			gso->u.gso.pad = 0;
 +			gso->u.gso.features = 0;
@@ -18673,9 +18286,11 @@ index 0000000..b23fab0
 +			gso->flags = 0;
 +		}
 +
-+		netbk_add_frag_responses(netif, status,
-+				netbk->meta + npo.meta_cons + 1,
-+				nr_frags);
++		if (sco->meta_slots_used > 1) {
++			netbk_add_frag_responses(netif, status,
++						 netbk->meta + npo.meta_cons + 1,
++						 sco->meta_slots_used - 1);
++		}
 +
 +		RING_PUSH_RESPONSES_AND_CHECK_NOTIFY(&netif->rx, ret);
 +		irq = netif->irq;
@@ -18702,8 +18317,8 @@ index 0000000..b23fab0
 +		}
 +
 +		netif_put(netif);
++		npo.meta_cons += sco->meta_slots_used;
 +		dev_kfree_skb(skb);
-+		npo.meta_cons += nr_frags + 1;
 +	}
 +
 +	while (notify_nr != 0) {
@@ -19473,16 +19088,6 @@ index 0000000..b23fab0
 +		netif_rx_ni(skb);
 +		netif->dev->last_rx = jiffies;
 +	}
-+
-+	if (netbk_copy_skb_mode == NETBK_DELAYED_COPY_SKB &&
-+	    !list_empty(&netbk->pending_inuse_head)) {
-+		struct netbk_tx_pending_inuse *oldest;
-+
-+		oldest = list_entry(netbk->pending_inuse_head.next,
-+				    struct netbk_tx_pending_inuse, list);
-+		mod_timer(&netbk->netbk_tx_pending_timer,
-+				oldest->alloc_time + HZ);
-+	}
 +}
 +
 +/* Called after netfront has transmitted */
@@ -19492,19 +19097,28 @@ index 0000000..b23fab0
 +	unsigned nr_mops;
 +	int ret;
 +
-+	if (netbk->dealloc_cons != netbk->dealloc_prod)
-+		net_tx_action_dealloc(netbk);
++	net_tx_action_dealloc(netbk);
 +
 +	nr_mops = net_tx_build_mops(netbk);
 +
 +	if (nr_mops == 0)
-+		return;
++		goto out;
 +
 +	ret = HYPERVISOR_grant_table_op(GNTTABOP_map_grant_ref,
 +					netbk->tx_map_ops, nr_mops);
 +	BUG_ON(ret);
 +
 +	net_tx_submit(netbk);
++out:
++	if (netbk_copy_skb_mode == NETBK_DELAYED_COPY_SKB &&
++	    !list_empty(&netbk->pending_inuse_head)) {
++		struct netbk_tx_pending_inuse *oldest;
++
++		oldest = list_entry(netbk->pending_inuse_head.next,
++				    struct netbk_tx_pending_inuse, list);
++		mod_timer(&netbk->netbk_tx_pending_timer,
++				oldest->alloc_time + HZ);
++	}
 +}
 +
 +static void netif_idx_release(struct xen_netbk *netbk, u16 pending_idx)
@@ -19706,12 +19320,12 @@ index 0000000..b23fab0
 +		return -ENODEV;
 +
 +	xen_netbk_group_nr = num_online_cpus();
-+	xen_netbk = (struct xen_netbk *)vmalloc(sizeof(struct xen_netbk) *
-+					    xen_netbk_group_nr);
++	xen_netbk = vmalloc(sizeof(struct xen_netbk) * xen_netbk_group_nr);
 +	if (!xen_netbk) {
 +		printk(KERN_ALERT "%s: out of memory\n", __func__);
 +		return -ENOMEM;
 +	}
++	memset(xen_netbk, 0, sizeof(struct xen_netbk) * xen_netbk_group_nr);
 +
 +	/* We can increase reservation by this much in net_rx_action(). */
 +//	balloon_update_driver_allowance(NET_RX_RING_SIZE);
@@ -28928,7 +28542,7 @@ index 7ca72b7..1c30adf 100644
  /*
   * Bits used by threaded handlers:
 diff --git a/include/linux/mm.h b/include/linux/mm.h
-index 24c3956..3d74515 100644
+index 24c3956..e8cf80f 100644
 --- a/include/linux/mm.h
 +++ b/include/linux/mm.h
 @@ -105,6 +105,12 @@ extern unsigned int kobjsize(const void *objp);
@@ -28944,7 +28558,7 @@ index 24c3956..3d74515 100644
  
  #ifndef VM_STACK_DEFAULT_FLAGS		/* arch can override this */
  #define VM_STACK_DEFAULT_FLAGS VM_DATA_DEFAULT_FLAGS
-@@ -195,6 +201,15 @@ struct vm_operations_struct {
+@@ -195,6 +201,11 @@ struct vm_operations_struct {
  	 */
  	int (*access)(struct vm_area_struct *vma, unsigned long addr,
  		      void *buf, int len, int write);
@@ -28953,10 +28567,6 @@ index 24c3956..3d74515 100644
 +	 * original value of @ptep. */
 +	pte_t (*zap_pte)(struct vm_area_struct *vma, 
 +			 unsigned long addr, pte_t *ptep, int is_fullmm);
-+
-+	/* called before close() to indicate no more pages should be mapped */
-+	void (*unmap)(struct vm_area_struct *area);
-+
  #ifdef CONFIG_NUMA
  	/*
  	 * set_policy() op must add a reference to any non-NULL @new mempolicy
@@ -33483,50 +33093,6 @@ index 4e59455..b2de7c9 100644
  	err = track_pfn_vma_new(vma, &prot, pfn, PAGE_ALIGN(size));
  	if (err) {
  		/*
-diff --git a/mm/mmap.c b/mm/mmap.c
-index ae19746..9c39fc2 100644
---- a/mm/mmap.c
-+++ b/mm/mmap.c
-@@ -1785,6 +1785,12 @@ static void unmap_region(struct mm_struct *mm,
- 	tlb_finish_mmu(tlb, start, end);
- }
- 
-+static inline void unmap_vma(struct vm_area_struct *vma)
-+{
-+	if (unlikely(vma->vm_ops && vma->vm_ops->unmap))
-+		vma->vm_ops->unmap(vma);
-+}
-+
- /*
-  * Create a list of vma's touched by the unmap, removing them from the mm's
-  * vma list as we go..
-@@ -1800,6 +1806,7 @@ detach_vmas_to_be_unmapped(struct mm_struct *mm, struct vm_area_struct *vma,
- 	insertion_point = (prev ? &prev->vm_next : &mm->mmap);
- 	do {
- 		rb_erase(&vma->vm_rb, &mm->mm_rb);
-+		unmap_vma(vma);
- 		mm->map_count--;
- 		tail_vma = vma;
- 		vma = vma->vm_next;
-@@ -2076,7 +2083,7 @@ EXPORT_SYMBOL(do_brk);
- void exit_mmap(struct mm_struct *mm)
- {
- 	struct mmu_gather *tlb;
--	struct vm_area_struct *vma;
-+	struct vm_area_struct *vma, *vma_tmp;
- 	unsigned long nr_accounted = 0;
- 	unsigned long end;
- 
-@@ -2098,6 +2105,9 @@ void exit_mmap(struct mm_struct *mm)
- 	if (!vma)	/* Can happen if dup_mmap() received an OOM */
- 		return;
- 
-+	for (vma_tmp = mm->mmap; vma_tmp; vma_tmp = vma_tmp->vm_next)
-+		unmap_vma(vma_tmp);
-+
- 	lru_add_drain();
- 	flush_cache_mm(mm);
- 	tlb = tlb_gather_mmu(mm, 1);
 diff --git a/mm/page_alloc.c b/mm/page_alloc.c
 index 36992b6..bc1b6e9 100644
 --- a/mm/page_alloc.c

xen.pvops.post.patch:
 arch/x86/include/asm/mmu.h               |    7 +++++++
 b/arch/x86/pci/common.c                  |   16 ++++++++++++++++
 drivers/pci/pci.h                        |    2 ++
 linux-2.6.32.x86_64/arch/x86/xen/Kconfig |    1 +
 4 files changed, 26 insertions(+)

Index: xen.pvops.post.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/Attic/xen.pvops.post.patch,v
retrieving revision 1.1.2.39
retrieving revision 1.1.2.40
diff -u -p -r1.1.2.39 -r1.1.2.40
--- xen.pvops.post.patch	5 Jun 2010 21:53:00 -0000	1.1.2.39
+++ xen.pvops.post.patch	16 Jun 2010 19:14:03 -0000	1.1.2.40
@@ -76,14 +76,3 @@ index 2202b62..f371fe8 100644
  	depends on X86_64 || (X86_32 && X86_PAE && !X86_VISWS)
  	depends on X86_CMPXCHG && X86_TSC
  	help
---- linux-2.6.32.x86_64/drivers/xen/balloon.c.orig	2010-06-05 22:43:11.000000000 +0100
-+++ linux-2.6.32.x86_64/drivers/xen/balloon.c	2010-06-05 22:47:03.000000000 +0100
-@@ -340,7 +340,7 @@
- 				discontig_free = 1;
- 
- 			set_phys_to_machine(lpfn, INVALID_P2M_ENTRY);
--			if (!PageHighMem(page)) {
-+			if (!PageHighMem(pfn_to_page(lpfn))) {
- 				ret = HYPERVISOR_update_va_mapping(
- 					(unsigned long)__va(lpfn << PAGE_SHIFT),
- 					__pte_ma(0), 0);



More information about the scm-commits mailing list