x86-tsc-sched-recompute-cyc2ns_offset-s-during-resume-from-sleep-states.patch
pci-msi-remove-unsafe-and-unnecessary-hardware-access.patch
pci-msi-restore-read_msi_msg_desc-add-get_cached_msi_msg_desc.patch
+staging-hv-fix-missing-functions-for-net_device_ops.patch
+staging-hv-fixed-bounce-kmap-problem-by-using-correct-index.patch
+staging-hv-fixed-the-value-of-the-64bit-hole-inside-ring-buffer.patch
+staging-hv-increased-storvsc-ringbuffer-and-max_io_requests.patch
+staging-hv-fixed-lockup-problem-with-bounce_buffer-scatter-list.patch
--- /dev/null
+From b681b5886bb5d1f5b6750a0ed7c62846da7ccea4 Mon Sep 17 00:00:00 2001
+From: Haiyang Zhang <haiyangz@microsoft.com>
+Date: Tue, 3 Aug 2010 19:15:31 +0000
+Subject: staging: hv: Fix missing functions for net_device_ops
+
+From: Haiyang Zhang <haiyangz@microsoft.com>
+
+commit b681b5886bb5d1f5b6750a0ed7c62846da7ccea4 upstream.
+
+Fix missing functions for net_device_ops.
+It's a bug when porting the drivers from 2.6.27 to 2.6.32. In 2.6.27,
+the default functions for Ethernet, like eth_change_mtu(), were assigned
+by ether_setup(). But in 2.6.32, these function pointers moved to
+net_device_ops structure and no longer be assigned in ether_setup(). So
+we need to set these functions in our driver code. It will ensure the
+MTU won't be set beyond 1500. Otherwise, this can cause an error on the
+server side, because the HyperV linux driver doesn't support jumbo frame
+yet.
+
+Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
+Signed-off-by: Hank Janssen <hjanssen@microsoft.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/staging/hv/netvsc_drv.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/drivers/staging/hv/netvsc_drv.c
++++ b/drivers/staging/hv/netvsc_drv.c
+@@ -392,6 +392,9 @@ static const struct net_device_ops devic
+ .ndo_start_xmit = netvsc_start_xmit,
+ .ndo_get_stats = netvsc_get_stats,
+ .ndo_set_multicast_list = netvsc_set_multicast_list,
++ .ndo_change_mtu = eth_change_mtu,
++ .ndo_validate_addr = eth_validate_addr,
++ .ndo_set_mac_address = eth_mac_addr,
+ };
+
+ static int netvsc_probe(struct device *device)
--- /dev/null
+From 0c47a70a9a8a6d1ec37a53d2f9cb82f8b8ef8aa2 Mon Sep 17 00:00:00 2001
+From: Hank Janssen <hjanssen@microsoft.com>
+Date: Thu, 5 Aug 2010 19:29:44 +0000
+Subject: staging: hv: Fixed bounce kmap problem by using correct index
+
+From: Hank Janssen <hjanssen@microsoft.com>
+
+commit 0c47a70a9a8a6d1ec37a53d2f9cb82f8b8ef8aa2 upstream.
+
+Fixed bounce offset kmap problem by using correct index.
+The symptom of the problem is that in some NAS appliances this problem
+represents Itself by a unresponsive VM under a load with many clients writing
+small files.
+
+Signed-off-by:Hank Janssen <hjanssen@microsoft.com>
+Signed-off-by:Haiyang Zhang <haiyangz@microsoft.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/staging/hv/storvsc_drv.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/staging/hv/storvsc_drv.c
++++ b/drivers/staging/hv/storvsc_drv.c
+@@ -532,7 +532,7 @@ static unsigned int copy_to_bounce_buffe
+
+ ASSERT(orig_sgl[i].offset + orig_sgl[i].length <= PAGE_SIZE);
+
+- if (j == 0)
++ if (bounce_addr == 0)
+ bounce_addr = (unsigned long)kmap_atomic(sg_page((&bounce_sgl[j])), KM_IRQ0);
+
+ while (srclen) {
+@@ -593,7 +593,7 @@ static unsigned int copy_from_bounce_buf
+ destlen = orig_sgl[i].length;
+ ASSERT(orig_sgl[i].offset + orig_sgl[i].length <= PAGE_SIZE);
+
+- if (j == 0)
++ if (bounce_addr == 0)
+ bounce_addr = (unsigned long)kmap_atomic(sg_page((&bounce_sgl[j])), KM_IRQ0);
+
+ while (destlen) {
--- /dev/null
+From 77c5ceaff31645ea049c6706b99e699eae81fb88 Mon Sep 17 00:00:00 2001
+From: Hank Janssen <hjanssen@microsoft.com>
+Date: Wed, 1 Sep 2010 11:10:41 -0700
+Subject: staging: hv: Fixed lockup problem with bounce_buffer scatter list
+
+From: Hank Janssen <hjanssen@microsoft.com>
+
+commit 77c5ceaff31645ea049c6706b99e699eae81fb88 upstream.
+
+Fixed lockup problem with bounce_buffer scatter list which caused
+crashes in heavy loads. And minor code indentation cleanup in effected
+area.
+
+Removed whitespace and noted minor indentation changes in description as
+pointed out by Joe Perches. (Thanks for reviewing Joe)
+
+Signed-off-by: Hank Janssen <hjanssen@microsoft.com>
+Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/staging/hv/storvsc_drv.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+--- a/drivers/staging/hv/storvsc_drv.c
++++ b/drivers/staging/hv/storvsc_drv.c
+@@ -652,6 +652,7 @@ static int storvsc_queuecommand(struct s
+ unsigned int request_size = 0;
+ int i;
+ struct scatterlist *sgl;
++ unsigned int sg_count = 0;
+
+ DPRINT_ENTER(STORVSC_DRV);
+
+@@ -736,6 +737,7 @@ static int storvsc_queuecommand(struct s
+ request->DataBuffer.Length = scsi_bufflen(scmnd);
+ if (scsi_sg_count(scmnd)) {
+ sgl = (struct scatterlist *)scsi_sglist(scmnd);
++ sg_count = scsi_sg_count(scmnd);
+
+ /* check if we need to bounce the sgl */
+ if (do_bounce_buffer(sgl, scsi_sg_count(scmnd)) != -1) {
+@@ -770,11 +772,12 @@ static int storvsc_queuecommand(struct s
+ scsi_sg_count(scmnd));
+
+ sgl = cmd_request->bounce_sgl;
++ sg_count = cmd_request->bounce_sgl_count;
+ }
+
+ request->DataBuffer.Offset = sgl[0].offset;
+
+- for (i = 0; i < scsi_sg_count(scmnd); i++) {
++ for (i = 0; i < sg_count; i++) {
+ DPRINT_DBG(STORVSC_DRV, "sgl[%d] len %d offset %d \n",
+ i, sgl[i].length, sgl[i].offset);
+ request->DataBuffer.PfnArray[i] =
--- /dev/null
+From e5fa721d1c2a54261a37eb59686e18dee34b6af6 Mon Sep 17 00:00:00 2001
+From: Haiyang Zhang <haiyangz@microsoft.com>
+Date: Thu, 5 Aug 2010 19:30:01 +0000
+Subject: staging: hv: Fixed the value of the 64bit-hole inside ring buffer
+
+From: Haiyang Zhang <haiyangz@microsoft.com>
+
+commit e5fa721d1c2a54261a37eb59686e18dee34b6af6 upstream.
+
+Fixed the value of the 64bit-hole inside ring buffer, this
+caused a problem on Hyper-V when running checked Windows builds.
+
+Checked builds of Windows are used internally and given to external
+system integrators at times. They are builds that for example that all
+elements in a structure follow the definition of that Structure. The bug
+this fixed was for a field that we did not fill in at all (Because we do
+Not use it on the Linux side), and the checked build of windows gives
+errors on it internally to the Windows logs.
+
+This fixes that error.
+
+Signed-off-by: Hank Janssen <hjanssen@microsoft.com>
+Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/staging/hv/RingBuffer.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/staging/hv/RingBuffer.c
++++ b/drivers/staging/hv/RingBuffer.c
+@@ -192,7 +192,7 @@ Description:
+ static inline u64
+ GetRingBufferIndices(RING_BUFFER_INFO* RingInfo)
+ {
+- return ((u64)RingInfo->RingBuffer->WriteIndex << 32) || RingInfo->RingBuffer->ReadIndex;
++ return (u64)RingInfo->RingBuffer->WriteIndex << 32;
+ }
+
+
--- /dev/null
+From 15dd1c9f53b31cdc84b8072a88c23fa09527c596 Mon Sep 17 00:00:00 2001
+From: Hank Janssen <hjanssen@microsoft.com>
+Date: Thu, 5 Aug 2010 19:30:31 +0000
+Subject: staging: hv: Increased storvsc ringbuffer and max_io_requests
+
+From: Hank Janssen <hjanssen@microsoft.com>
+
+commit 15dd1c9f53b31cdc84b8072a88c23fa09527c596 upstream.
+
+Increased storvsc ringbuffer and max_io_requests. This now more
+closely mimics the numbers on Hyper-V. And will allow more IO requests
+to take place for the SCSI driver.
+
+Max_IO is set to double from what it was before, Hyper-V allows it and
+we have had appliance builder requests to see if it was a problem to
+increase the number.
+
+Ringbuffer size for storvsc is now increased because I have seen A few buffer
+problems on extremely busy systems. They were Set pretty low before.
+And since max_io_requests is increased I Really needed to increase the buffer
+as well.
+
+
+Signed-off-by: Hank Janssen <hjanssen@microsoft.com>
+Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/staging/hv/StorVscApi.h | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/staging/hv/StorVscApi.h
++++ b/drivers/staging/hv/StorVscApi.h
+@@ -28,10 +28,10 @@
+ #include "VmbusApi.h"
+
+ /* Defines */
+-#define STORVSC_RING_BUFFER_SIZE (10*PAGE_SIZE)
++#define STORVSC_RING_BUFFER_SIZE (20*PAGE_SIZE)
+ #define BLKVSC_RING_BUFFER_SIZE (20*PAGE_SIZE)
+
+-#define STORVSC_MAX_IO_REQUESTS 64
++#define STORVSC_MAX_IO_REQUESTS 128
+
+ /*
+ * In Hyper-V, each port/path/target maps to 1 scsi host adapter. In