From: Greg Kroah-Hartman Date: Wed, 15 Sep 2010 19:05:11 +0000 (-0700) Subject: .35 patches X-Git-Tag: v2.6.27.54~37 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=069a89602e1fcfaf778e3471808ff60d62e8621c;p=thirdparty%2Fkernel%2Fstable-queue.git .35 patches --- diff --git a/queue-2.6.35/series b/queue-2.6.35/series index 1b82ea18907..e72e52c76bc 100644 --- a/queue-2.6.35/series +++ b/queue-2.6.35/series @@ -19,3 +19,9 @@ pci-msi-restore-read_msi_msg_desc-add-get_cached_msi_msg_desc.patch direct-io-move-aio_complete-into-end_io.patch ext4-move-aio-completion-after-unwritten-extent-conversion.patch xfs-move-aio-completion-after-unwritten-extent-conversion.patch +staging-rt2870sta-add-more-device-ids-from-vendor-drivers.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.35/staging-hv-fix-missing-functions-for-net_device_ops.patch b/queue-2.6.35/staging-hv-fix-missing-functions-for-net_device_ops.patch new file mode 100644 index 00000000000..be684f7a9e0 --- /dev/null +++ b/queue-2.6.35/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 +@@ -348,6 +348,9 @@ static const struct net_device_ops devic + .ndo_stop = netvsc_close, + .ndo_start_xmit = netvsc_start_xmit, + .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.35/staging-hv-fixed-bounce-kmap-problem-by-using-correct-index.patch b/queue-2.6.35/staging-hv-fixed-bounce-kmap-problem-by-using-correct-index.patch new file mode 100644 index 00000000000..f4868ad6707 --- /dev/null +++ b/queue-2.6.35/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 +@@ -526,7 +526,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) { +@@ -587,7 +587,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.35/staging-hv-fixed-lockup-problem-with-bounce_buffer-scatter-list.patch b/queue-2.6.35/staging-hv-fixed-lockup-problem-with-bounce_buffer-scatter-list.patch new file mode 100644 index 00000000000..d32519983f4 --- /dev/null +++ b/queue-2.6.35/staging-hv-fixed-lockup-problem-with-bounce_buffer-scatter-list.patch @@ -0,0 +1,61 @@ +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 | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +--- a/drivers/staging/hv/storvsc_drv.c ++++ b/drivers/staging/hv/storvsc_drv.c +@@ -646,6 +646,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); + +@@ -730,6 +731,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) { +@@ -764,15 +766,16 @@ 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] = +- page_to_pfn(sg_page((&sgl[i]))); ++ page_to_pfn(sg_page((&sgl[i]))); + } + } else if (scsi_sglist(scmnd)) { + /* ASSERT(scsi_bufflen(scmnd) <= PAGE_SIZE); */ diff --git a/queue-2.6.35/staging-hv-fixed-the-value-of-the-64bit-hole-inside-ring-buffer.patch b/queue-2.6.35/staging-hv-fixed-the-value-of-the-64bit-hole-inside-ring-buffer.patch new file mode 100644 index 00000000000..34e85c0e053 --- /dev/null +++ b/queue-2.6.35/staging-hv-fixed-the-value-of-the-64bit-hole-inside-ring-buffer.patch @@ -0,0 +1,41 @@ +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/ring_buffer.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +--- a/drivers/staging/hv/ring_buffer.c ++++ b/drivers/staging/hv/ring_buffer.c +@@ -192,8 +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.35/staging-hv-increased-storvsc-ringbuffer-and-max_io_requests.patch b/queue-2.6.35/staging-hv-increased-storvsc-ringbuffer-and-max_io_requests.patch new file mode 100644 index 00000000000..81edc0665bc --- /dev/null +++ b/queue-2.6.35/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/storvsc_api.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/drivers/staging/hv/storvsc_api.h ++++ b/drivers/staging/hv/storvsc_api.h +@@ -28,10 +28,10 @@ + #include "vmbus_api.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 diff --git a/queue-2.6.35/staging-rt2870sta-add-more-device-ids-from-vendor-drivers.patch b/queue-2.6.35/staging-rt2870sta-add-more-device-ids-from-vendor-drivers.patch new file mode 100644 index 00000000000..0f8b097aa7f --- /dev/null +++ b/queue-2.6.35/staging-rt2870sta-add-more-device-ids-from-vendor-drivers.patch @@ -0,0 +1,112 @@ +From 9e693e4375689cb1cd1529aba011de0044f74ef5 Mon Sep 17 00:00:00 2001 +From: Ben Hutchings +Date: Sun, 29 Aug 2010 02:13:11 +0100 +Subject: Staging: rt2870sta: Add more device IDs from vendor drivers + +From: Ben Hutchings + +commit 9e693e4375689cb1cd1529aba011de0044f74ef5 upstream. + +Taken from DPO_RT3070_LinuxSTA_V2.3.0.4_20100604.tar.bz2 and +2010_0709_RT2870_Linux_STA_v2.4.0.1.tar.bz2, with duplicates removed. + +Signed-off-by: Ben Hutchings +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/staging/rt2860/usb_main_dev.c | 41 ++++++++++++++++++++++++++++++++-- + 1 file changed, 39 insertions(+), 2 deletions(-) + +--- a/drivers/staging/rt2860/usb_main_dev.c ++++ b/drivers/staging/rt2860/usb_main_dev.c +@@ -44,6 +44,7 @@ struct usb_device_id rtusb_usb_id[] = { + {USB_DEVICE(0x07B8, 0x2870)}, /* AboCom */ + {USB_DEVICE(0x07B8, 0x2770)}, /* AboCom */ + {USB_DEVICE(0x0DF6, 0x0039)}, /* Sitecom 2770 */ ++ {USB_DEVICE(0x0DF6, 0x003F)}, /* Sitecom 2770 */ + {USB_DEVICE(0x083A, 0x7512)}, /* Arcadyan 2770 */ + {USB_DEVICE(0x0789, 0x0162)}, /* Logitec 2870 */ + {USB_DEVICE(0x0789, 0x0163)}, /* Logitec 2870 */ +@@ -95,7 +96,8 @@ struct usb_device_id rtusb_usb_id[] = { + {USB_DEVICE(0x050d, 0x815c)}, + {USB_DEVICE(0x1482, 0x3C09)}, /* Abocom */ + {USB_DEVICE(0x14B2, 0x3C09)}, /* Alpha */ +- {USB_DEVICE(0x04E8, 0x2018)}, /* samsung */ ++ {USB_DEVICE(0x04E8, 0x2018)}, /* samsung linkstick2 */ ++ {USB_DEVICE(0x1690, 0x0740)}, /* Askey */ + {USB_DEVICE(0x5A57, 0x0280)}, /* Zinwell */ + {USB_DEVICE(0x5A57, 0x0282)}, /* Zinwell */ + {USB_DEVICE(0x7392, 0x7718)}, +@@ -105,21 +107,34 @@ struct usb_device_id rtusb_usb_id[] = { + {USB_DEVICE(0x1737, 0x0071)}, /* Linksys WUSB600N */ + {USB_DEVICE(0x0411, 0x00e8)}, /* Buffalo WLI-UC-G300N */ + {USB_DEVICE(0x050d, 0x815c)}, /* Belkin F5D8053 */ ++ {USB_DEVICE(0x100D, 0x9031)}, /* Motorola 2770 */ + #endif /* RT2870 // */ + #ifdef RT3070 + {USB_DEVICE(0x148F, 0x3070)}, /* Ralink 3070 */ + {USB_DEVICE(0x148F, 0x3071)}, /* Ralink 3071 */ + {USB_DEVICE(0x148F, 0x3072)}, /* Ralink 3072 */ + {USB_DEVICE(0x0DB0, 0x3820)}, /* Ralink 3070 */ ++ {USB_DEVICE(0x0DB0, 0x871C)}, /* Ralink 3070 */ ++ {USB_DEVICE(0x0DB0, 0x822C)}, /* Ralink 3070 */ ++ {USB_DEVICE(0x0DB0, 0x871B)}, /* Ralink 3070 */ ++ {USB_DEVICE(0x0DB0, 0x822B)}, /* Ralink 3070 */ + {USB_DEVICE(0x0DF6, 0x003E)}, /* Sitecom 3070 */ + {USB_DEVICE(0x0DF6, 0x0042)}, /* Sitecom 3072 */ ++ {USB_DEVICE(0x0DF6, 0x0048)}, /* Sitecom 3070 */ ++ {USB_DEVICE(0x0DF6, 0x0047)}, /* Sitecom 3071 */ + {USB_DEVICE(0x14B2, 0x3C12)}, /* AL 3070 */ + {USB_DEVICE(0x18C5, 0x0012)}, /* Corega 3070 */ + {USB_DEVICE(0x083A, 0x7511)}, /* Arcadyan 3070 */ ++ {USB_DEVICE(0x083A, 0xA701)}, /* SMC 3070 */ ++ {USB_DEVICE(0x083A, 0xA702)}, /* SMC 3072 */ + {USB_DEVICE(0x1740, 0x9703)}, /* EnGenius 3070 */ + {USB_DEVICE(0x1740, 0x9705)}, /* EnGenius 3071 */ + {USB_DEVICE(0x1740, 0x9706)}, /* EnGenius 3072 */ ++ {USB_DEVICE(0x1740, 0x9707)}, /* EnGenius 3070 */ ++ {USB_DEVICE(0x1740, 0x9708)}, /* EnGenius 3071 */ ++ {USB_DEVICE(0x1740, 0x9709)}, /* EnGenius 3072 */ + {USB_DEVICE(0x13D3, 0x3273)}, /* AzureWave 3070 */ ++ {USB_DEVICE(0x13D3, 0x3305)}, /* AzureWave 3070*/ + {USB_DEVICE(0x1044, 0x800D)}, /* Gigabyte GN-WB32L 3070 */ + {USB_DEVICE(0x2019, 0xAB25)}, /* Planex Communications, Inc. RT3070 */ + {USB_DEVICE(0x07B8, 0x3070)}, /* AboCom 3070 */ +@@ -132,14 +147,36 @@ struct usb_device_id rtusb_usb_id[] = { + {USB_DEVICE(0x07D1, 0x3C0D)}, /* D-Link 3070 */ + {USB_DEVICE(0x07D1, 0x3C0E)}, /* D-Link 3070 */ + {USB_DEVICE(0x07D1, 0x3C0F)}, /* D-Link 3070 */ ++ {USB_DEVICE(0x07D1, 0x3C16)}, /* D-Link 3070 */ ++ {USB_DEVICE(0x07D1, 0x3C17)}, /* D-Link 8070 */ + {USB_DEVICE(0x1D4D, 0x000C)}, /* Pegatron Corporation 3070 */ + {USB_DEVICE(0x1D4D, 0x000E)}, /* Pegatron Corporation 3070 */ + {USB_DEVICE(0x5A57, 0x5257)}, /* Zinwell 3070 */ + {USB_DEVICE(0x5A57, 0x0283)}, /* Zinwell 3072 */ + {USB_DEVICE(0x04BB, 0x0945)}, /* I-O DATA 3072 */ ++ {USB_DEVICE(0x04BB, 0x0947)}, /* I-O DATA 3070 */ ++ {USB_DEVICE(0x04BB, 0x0948)}, /* I-O DATA 3072 */ + {USB_DEVICE(0x203D, 0x1480)}, /* Encore 3070 */ ++ {USB_DEVICE(0x20B8, 0x8888)}, /* PARA INDUSTRIAL 3070 */ ++ {USB_DEVICE(0x0B05, 0x1784)}, /* Asus 3072 */ ++ {USB_DEVICE(0x203D, 0x14A9)}, /* Encore 3070*/ ++ {USB_DEVICE(0x0DB0, 0x899A)}, /* MSI 3070*/ ++ {USB_DEVICE(0x0DB0, 0x3870)}, /* MSI 3070*/ ++ {USB_DEVICE(0x0DB0, 0x870A)}, /* MSI 3070*/ ++ {USB_DEVICE(0x0DB0, 0x6899)}, /* MSI 3070 */ ++ {USB_DEVICE(0x0DB0, 0x3822)}, /* MSI 3070 */ ++ {USB_DEVICE(0x0DB0, 0x3871)}, /* MSI 3070 */ ++ {USB_DEVICE(0x0DB0, 0x871A)}, /* MSI 3070 */ ++ {USB_DEVICE(0x0DB0, 0x822A)}, /* MSI 3070 */ ++ {USB_DEVICE(0x0DB0, 0x3821)}, /* Ralink 3070 */ ++ {USB_DEVICE(0x0DB0, 0x821A)}, /* Ralink 3070 */ ++ {USB_DEVICE(0x083A, 0xA703)}, /* IO-MAGIC */ ++ {USB_DEVICE(0x13D3, 0x3307)}, /* Azurewave */ ++ {USB_DEVICE(0x13D3, 0x3321)}, /* Azurewave */ ++ {USB_DEVICE(0x07FA, 0x7712)}, /* Edimax */ ++ {USB_DEVICE(0x0789, 0x0166)}, /* Edimax */ ++ {USB_DEVICE(0x148F, 0x2070)}, /* Edimax */ + #endif /* RT3070 // */ +- {USB_DEVICE(0x0DF6, 0x003F)}, /* Sitecom WL-608 */ + {USB_DEVICE(0x1737, 0x0077)}, /* Linksys WUSB54GC-EU v3 */ + {USB_DEVICE(0x2001, 0x3C09)}, /* D-Link */ + {USB_DEVICE(0x2001, 0x3C0A)}, /* D-Link 3072 */