From: Greg Kroah-Hartman Date: Wed, 15 Sep 2010 19:06:04 +0000 (-0700) Subject: .32 patches X-Git-Tag: v2.6.27.54~36 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5b7e744d5b8510fd5aa0d283ce39cae809e53ef0;p=thirdparty%2Fkernel%2Fstable-queue.git .32 patches --- diff --git a/queue-2.6.32/series b/queue-2.6.32/series index fd8c567c776..4d28dac883f 100644 --- a/queue-2.6.32/series +++ b/queue-2.6.32/series @@ -6,3 +6,8 @@ sata_mv-fix-broken-dsm-trim-support-v2.patch 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 diff --git a/queue-2.6.32/staging-hv-fix-missing-functions-for-net_device_ops.patch b/queue-2.6.32/staging-hv-fix-missing-functions-for-net_device_ops.patch new file mode 100644 index 00000000000..cbfb31e4d16 --- /dev/null +++ b/queue-2.6.32/staging-hv-fix-missing-functions-for-net_device_ops.patch @@ -0,0 +1,39 @@ +From b681b5886bb5d1f5b6750a0ed7c62846da7ccea4 Mon Sep 17 00:00:00 2001 +From: Haiyang Zhang +Date: Tue, 3 Aug 2010 19:15:31 +0000 +Subject: staging: hv: Fix missing functions for net_device_ops + +From: Haiyang Zhang + +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 +Signed-off-by: Hank Janssen +Signed-off-by: Greg Kroah-Hartman + +--- + 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) diff --git a/queue-2.6.32/staging-hv-fixed-bounce-kmap-problem-by-using-correct-index.patch b/queue-2.6.32/staging-hv-fixed-bounce-kmap-problem-by-using-correct-index.patch new file mode 100644 index 00000000000..f71e63cf173 --- /dev/null +++ b/queue-2.6.32/staging-hv-fixed-bounce-kmap-problem-by-using-correct-index.patch @@ -0,0 +1,42 @@ +From 0c47a70a9a8a6d1ec37a53d2f9cb82f8b8ef8aa2 Mon Sep 17 00:00:00 2001 +From: Hank Janssen +Date: Thu, 5 Aug 2010 19:29:44 +0000 +Subject: staging: hv: Fixed bounce kmap problem by using correct index + +From: Hank Janssen + +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 +Signed-off-by:Haiyang Zhang +Signed-off-by: Greg Kroah-Hartman + +--- + 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) { diff --git a/queue-2.6.32/staging-hv-fixed-lockup-problem-with-bounce_buffer-scatter-list.patch b/queue-2.6.32/staging-hv-fixed-lockup-problem-with-bounce_buffer-scatter-list.patch new file mode 100644 index 00000000000..c4928945e4c --- /dev/null +++ b/queue-2.6.32/staging-hv-fixed-lockup-problem-with-bounce_buffer-scatter-list.patch @@ -0,0 +1,56 @@ +From 77c5ceaff31645ea049c6706b99e699eae81fb88 Mon Sep 17 00:00:00 2001 +From: Hank Janssen +Date: Wed, 1 Sep 2010 11:10:41 -0700 +Subject: staging: hv: Fixed lockup problem with bounce_buffer scatter list + +From: Hank Janssen + +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 +Signed-off-by: Haiyang Zhang +Signed-off-by: Greg Kroah-Hartman + +--- + 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] = diff --git a/queue-2.6.32/staging-hv-fixed-the-value-of-the-64bit-hole-inside-ring-buffer.patch b/queue-2.6.32/staging-hv-fixed-the-value-of-the-64bit-hole-inside-ring-buffer.patch new file mode 100644 index 00000000000..7232df751ee --- /dev/null +++ b/queue-2.6.32/staging-hv-fixed-the-value-of-the-64bit-hole-inside-ring-buffer.patch @@ -0,0 +1,40 @@ +From e5fa721d1c2a54261a37eb59686e18dee34b6af6 Mon Sep 17 00:00:00 2001 +From: Haiyang Zhang +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 + +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 +Signed-off-by: Haiyang Zhang +Signed-off-by: Greg Kroah-Hartman + +--- + 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; + } + + diff --git a/queue-2.6.32/staging-hv-increased-storvsc-ringbuffer-and-max_io_requests.patch b/queue-2.6.32/staging-hv-increased-storvsc-ringbuffer-and-max_io_requests.patch new file mode 100644 index 00000000000..afb6dbe29fd --- /dev/null +++ b/queue-2.6.32/staging-hv-increased-storvsc-ringbuffer-and-max_io_requests.patch @@ -0,0 +1,46 @@ +From 15dd1c9f53b31cdc84b8072a88c23fa09527c596 Mon Sep 17 00:00:00 2001 +From: Hank Janssen +Date: Thu, 5 Aug 2010 19:30:31 +0000 +Subject: staging: hv: Increased storvsc ringbuffer and max_io_requests + +From: Hank Janssen + +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 +Signed-off-by: Haiyang Zhang +Signed-off-by: Greg Kroah-Hartman + +--- + 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