aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--MAINTAINERS2
-rw-r--r--arch/arm/boot/dts/ste-nomadik-s8815.dts2
-rw-r--r--arch/arm/boot/dts/ste-nomadik-stn8815.dtsi7
-rw-r--r--arch/x86/include/asm/irqflags.h2
-rw-r--r--arch/x86/kernel/entry_64.S28
-rw-r--r--arch/x86/kernel/paravirt_patch_64.c2
-rw-r--r--drivers/iio/accel/bma180.c8
-rw-r--r--drivers/iio/industrialio-buffer.c2
-rw-r--r--drivers/md/dm-bufio.c2
-rw-r--r--drivers/md/dm-cache-target.c13
-rw-r--r--drivers/staging/rtl8723au/os_dep/usb_intf.c4
-rw-r--r--drivers/staging/vt6655/bssdb.c2
-rw-r--r--drivers/staging/vt6655/device_main.c7
13 files changed, 39 insertions, 42 deletions
diff --git a/MAINTAINERS b/MAINTAINERS
index 95990dd2678c..c2066f4c3286 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -8922,7 +8922,7 @@ M: Stephen Warren <swarren@wwwdotorg.org>
8922M: Thierry Reding <thierry.reding@gmail.com> 8922M: Thierry Reding <thierry.reding@gmail.com>
8923L: linux-tegra@vger.kernel.org 8923L: linux-tegra@vger.kernel.org
8924Q: http://patchwork.ozlabs.org/project/linux-tegra/list/ 8924Q: http://patchwork.ozlabs.org/project/linux-tegra/list/
8925T: git git://git.kernel.org/pub/scm/linux/kernel/git/swarren/linux-tegra.git 8925T: git git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux.git
8926S: Supported 8926S: Supported
8927N: [^a-z]tegra 8927N: [^a-z]tegra
8928 8928
diff --git a/arch/arm/boot/dts/ste-nomadik-s8815.dts b/arch/arm/boot/dts/ste-nomadik-s8815.dts
index f557feb997f4..90d8b6c7a205 100644
--- a/arch/arm/boot/dts/ste-nomadik-s8815.dts
+++ b/arch/arm/boot/dts/ste-nomadik-s8815.dts
@@ -4,7 +4,7 @@
4 */ 4 */
5 5
6/dts-v1/; 6/dts-v1/;
7/include/ "ste-nomadik-stn8815.dtsi" 7#include "ste-nomadik-stn8815.dtsi"
8 8
9/ { 9/ {
10 model = "Calao Systems USB-S8815"; 10 model = "Calao Systems USB-S8815";
diff --git a/arch/arm/boot/dts/ste-nomadik-stn8815.dtsi b/arch/arm/boot/dts/ste-nomadik-stn8815.dtsi
index d316c955bd5f..dbcf521b017f 100644
--- a/arch/arm/boot/dts/ste-nomadik-stn8815.dtsi
+++ b/arch/arm/boot/dts/ste-nomadik-stn8815.dtsi
@@ -1,7 +1,9 @@
1/* 1/*
2 * Device Tree for the ST-Ericsson Nomadik 8815 STn8815 SoC 2 * Device Tree for the ST-Ericsson Nomadik 8815 STn8815 SoC
3 */ 3 */
4/include/ "skeleton.dtsi" 4
5#include <dt-bindings/gpio/gpio.h>
6#include "skeleton.dtsi"
5 7
6/ { 8/ {
7 #address-cells = <1>; 9 #address-cells = <1>;
@@ -842,8 +844,7 @@
842 bus-width = <4>; 844 bus-width = <4>;
843 cap-mmc-highspeed; 845 cap-mmc-highspeed;
844 cap-sd-highspeed; 846 cap-sd-highspeed;
845 cd-gpios = <&gpio3 15 0x1>; 847 cd-gpios = <&gpio3 15 GPIO_ACTIVE_LOW>;
846 cd-inverted;
847 pinctrl-names = "default"; 848 pinctrl-names = "default";
848 pinctrl-0 = <&mmcsd_default_mux>, <&mmcsd_default_mode>; 849 pinctrl-0 = <&mmcsd_default_mux>, <&mmcsd_default_mode>;
849 vmmc-supply = <&vmmc_regulator>; 850 vmmc-supply = <&vmmc_regulator>;
diff --git a/arch/x86/include/asm/irqflags.h b/arch/x86/include/asm/irqflags.h
index bba3cf88e624..0a8b519226b8 100644
--- a/arch/x86/include/asm/irqflags.h
+++ b/arch/x86/include/asm/irqflags.h
@@ -129,7 +129,7 @@ static inline notrace unsigned long arch_local_irq_save(void)
129 129
130#define PARAVIRT_ADJUST_EXCEPTION_FRAME /* */ 130#define PARAVIRT_ADJUST_EXCEPTION_FRAME /* */
131 131
132#define INTERRUPT_RETURN iretq 132#define INTERRUPT_RETURN jmp native_iret
133#define USERGS_SYSRET64 \ 133#define USERGS_SYSRET64 \
134 swapgs; \ 134 swapgs; \
135 sysretq; 135 sysretq;
diff --git a/arch/x86/kernel/entry_64.S b/arch/x86/kernel/entry_64.S
index b25ca969edd2..c844f0816ab8 100644
--- a/arch/x86/kernel/entry_64.S
+++ b/arch/x86/kernel/entry_64.S
@@ -830,27 +830,24 @@ restore_args:
830 RESTORE_ARGS 1,8,1 830 RESTORE_ARGS 1,8,1
831 831
832irq_return: 832irq_return:
833 INTERRUPT_RETURN
834
835ENTRY(native_iret)
833 /* 836 /*
834 * Are we returning to a stack segment from the LDT? Note: in 837 * Are we returning to a stack segment from the LDT? Note: in
835 * 64-bit mode SS:RSP on the exception stack is always valid. 838 * 64-bit mode SS:RSP on the exception stack is always valid.
836 */ 839 */
837#ifdef CONFIG_X86_ESPFIX64 840#ifdef CONFIG_X86_ESPFIX64
838 testb $4,(SS-RIP)(%rsp) 841 testb $4,(SS-RIP)(%rsp)
839 jnz irq_return_ldt 842 jnz native_irq_return_ldt
840#endif 843#endif
841 844
842irq_return_iret: 845native_irq_return_iret:
843 INTERRUPT_RETURN
844 _ASM_EXTABLE(irq_return_iret, bad_iret)
845
846#ifdef CONFIG_PARAVIRT
847ENTRY(native_iret)
848 iretq 846 iretq
849 _ASM_EXTABLE(native_iret, bad_iret) 847 _ASM_EXTABLE(native_irq_return_iret, bad_iret)
850#endif
851 848
852#ifdef CONFIG_X86_ESPFIX64 849#ifdef CONFIG_X86_ESPFIX64
853irq_return_ldt: 850native_irq_return_ldt:
854 pushq_cfi %rax 851 pushq_cfi %rax
855 pushq_cfi %rdi 852 pushq_cfi %rdi
856 SWAPGS 853 SWAPGS
@@ -872,7 +869,7 @@ irq_return_ldt:
872 SWAPGS 869 SWAPGS
873 movq %rax,%rsp 870 movq %rax,%rsp
874 popq_cfi %rax 871 popq_cfi %rax
875 jmp irq_return_iret 872 jmp native_irq_return_iret
876#endif 873#endif
877 874
878 .section .fixup,"ax" 875 .section .fixup,"ax"
@@ -956,13 +953,8 @@ __do_double_fault:
956 cmpl $__KERNEL_CS,CS(%rdi) 953 cmpl $__KERNEL_CS,CS(%rdi)
957 jne do_double_fault 954 jne do_double_fault
958 movq RIP(%rdi),%rax 955 movq RIP(%rdi),%rax
959 cmpq $irq_return_iret,%rax 956 cmpq $native_irq_return_iret,%rax
960#ifdef CONFIG_PARAVIRT
961 je 1f
962 cmpq $native_iret,%rax
963#endif
964 jne do_double_fault /* This shouldn't happen... */ 957 jne do_double_fault /* This shouldn't happen... */
9651:
966 movq PER_CPU_VAR(kernel_stack),%rax 958 movq PER_CPU_VAR(kernel_stack),%rax
967 subq $(6*8-KERNEL_STACK_OFFSET),%rax /* Reset to original stack */ 959 subq $(6*8-KERNEL_STACK_OFFSET),%rax /* Reset to original stack */
968 movq %rax,RSP(%rdi) 960 movq %rax,RSP(%rdi)
@@ -1428,7 +1420,7 @@ error_sti:
1428 */ 1420 */
1429error_kernelspace: 1421error_kernelspace:
1430 incl %ebx 1422 incl %ebx
1431 leaq irq_return_iret(%rip),%rcx 1423 leaq native_irq_return_iret(%rip),%rcx
1432 cmpq %rcx,RIP+8(%rsp) 1424 cmpq %rcx,RIP+8(%rsp)
1433 je error_swapgs 1425 je error_swapgs
1434 movl %ecx,%eax /* zero extend */ 1426 movl %ecx,%eax /* zero extend */
diff --git a/arch/x86/kernel/paravirt_patch_64.c b/arch/x86/kernel/paravirt_patch_64.c
index 3f08f34f93eb..a1da6737ba5b 100644
--- a/arch/x86/kernel/paravirt_patch_64.c
+++ b/arch/x86/kernel/paravirt_patch_64.c
@@ -6,7 +6,6 @@ DEF_NATIVE(pv_irq_ops, irq_disable, "cli");
6DEF_NATIVE(pv_irq_ops, irq_enable, "sti"); 6DEF_NATIVE(pv_irq_ops, irq_enable, "sti");
7DEF_NATIVE(pv_irq_ops, restore_fl, "pushq %rdi; popfq"); 7DEF_NATIVE(pv_irq_ops, restore_fl, "pushq %rdi; popfq");
8DEF_NATIVE(pv_irq_ops, save_fl, "pushfq; popq %rax"); 8DEF_NATIVE(pv_irq_ops, save_fl, "pushfq; popq %rax");
9DEF_NATIVE(pv_cpu_ops, iret, "iretq");
10DEF_NATIVE(pv_mmu_ops, read_cr2, "movq %cr2, %rax"); 9DEF_NATIVE(pv_mmu_ops, read_cr2, "movq %cr2, %rax");
11DEF_NATIVE(pv_mmu_ops, read_cr3, "movq %cr3, %rax"); 10DEF_NATIVE(pv_mmu_ops, read_cr3, "movq %cr3, %rax");
12DEF_NATIVE(pv_mmu_ops, write_cr3, "movq %rdi, %cr3"); 11DEF_NATIVE(pv_mmu_ops, write_cr3, "movq %rdi, %cr3");
@@ -50,7 +49,6 @@ unsigned native_patch(u8 type, u16 clobbers, void *ibuf,
50 PATCH_SITE(pv_irq_ops, save_fl); 49 PATCH_SITE(pv_irq_ops, save_fl);
51 PATCH_SITE(pv_irq_ops, irq_enable); 50 PATCH_SITE(pv_irq_ops, irq_enable);
52 PATCH_SITE(pv_irq_ops, irq_disable); 51 PATCH_SITE(pv_irq_ops, irq_disable);
53 PATCH_SITE(pv_cpu_ops, iret);
54 PATCH_SITE(pv_cpu_ops, irq_enable_sysexit); 52 PATCH_SITE(pv_cpu_ops, irq_enable_sysexit);
55 PATCH_SITE(pv_cpu_ops, usergs_sysret32); 53 PATCH_SITE(pv_cpu_ops, usergs_sysret32);
56 PATCH_SITE(pv_cpu_ops, usergs_sysret64); 54 PATCH_SITE(pv_cpu_ops, usergs_sysret64);
diff --git a/drivers/iio/accel/bma180.c b/drivers/iio/accel/bma180.c
index a7e68c81f89d..a077cc86421b 100644
--- a/drivers/iio/accel/bma180.c
+++ b/drivers/iio/accel/bma180.c
@@ -68,13 +68,13 @@
68/* Defaults values */ 68/* Defaults values */
69#define BMA180_DEF_PMODE 0 69#define BMA180_DEF_PMODE 0
70#define BMA180_DEF_BW 20 70#define BMA180_DEF_BW 20
71#define BMA180_DEF_SCALE 250 71#define BMA180_DEF_SCALE 2452
72 72
73/* Available values for sysfs */ 73/* Available values for sysfs */
74#define BMA180_FLP_FREQ_AVAILABLE \ 74#define BMA180_FLP_FREQ_AVAILABLE \
75 "10 20 40 75 150 300" 75 "10 20 40 75 150 300"
76#define BMA180_SCALE_AVAILABLE \ 76#define BMA180_SCALE_AVAILABLE \
77 "0.000130 0.000190 0.000250 0.000380 0.000500 0.000990 0.001980" 77 "0.001275 0.001863 0.002452 0.003727 0.004903 0.009709 0.019417"
78 78
79struct bma180_data { 79struct bma180_data {
80 struct i2c_client *client; 80 struct i2c_client *client;
@@ -94,7 +94,7 @@ enum bma180_axis {
94}; 94};
95 95
96static int bw_table[] = { 10, 20, 40, 75, 150, 300 }; /* Hz */ 96static int bw_table[] = { 10, 20, 40, 75, 150, 300 }; /* Hz */
97static int scale_table[] = { 130, 190, 250, 380, 500, 990, 1980 }; 97static int scale_table[] = { 1275, 1863, 2452, 3727, 4903, 9709, 19417 };
98 98
99static int bma180_get_acc_reg(struct bma180_data *data, enum bma180_axis axis) 99static int bma180_get_acc_reg(struct bma180_data *data, enum bma180_axis axis)
100{ 100{
@@ -376,6 +376,8 @@ static int bma180_write_raw(struct iio_dev *indio_dev,
376 mutex_unlock(&data->mutex); 376 mutex_unlock(&data->mutex);
377 return ret; 377 return ret;
378 case IIO_CHAN_INFO_LOW_PASS_FILTER_3DB_FREQUENCY: 378 case IIO_CHAN_INFO_LOW_PASS_FILTER_3DB_FREQUENCY:
379 if (val2)
380 return -EINVAL;
379 mutex_lock(&data->mutex); 381 mutex_lock(&data->mutex);
380 ret = bma180_set_bw(data, val); 382 ret = bma180_set_bw(data, val);
381 mutex_unlock(&data->mutex); 383 mutex_unlock(&data->mutex);
diff --git a/drivers/iio/industrialio-buffer.c b/drivers/iio/industrialio-buffer.c
index 36b1ae92e239..9f1a14009901 100644
--- a/drivers/iio/industrialio-buffer.c
+++ b/drivers/iio/industrialio-buffer.c
@@ -966,7 +966,7 @@ static int iio_buffer_update_demux(struct iio_dev *indio_dev,
966 966
967 /* Now we have the two masks, work from least sig and build up sizes */ 967 /* Now we have the two masks, work from least sig and build up sizes */
968 for_each_set_bit(out_ind, 968 for_each_set_bit(out_ind,
969 indio_dev->active_scan_mask, 969 buffer->scan_mask,
970 indio_dev->masklength) { 970 indio_dev->masklength) {
971 in_ind = find_next_bit(indio_dev->active_scan_mask, 971 in_ind = find_next_bit(indio_dev->active_scan_mask,
972 indio_dev->masklength, 972 indio_dev->masklength,
diff --git a/drivers/md/dm-bufio.c b/drivers/md/dm-bufio.c
index 4e84095833db..d724459860d9 100644
--- a/drivers/md/dm-bufio.c
+++ b/drivers/md/dm-bufio.c
@@ -1541,7 +1541,7 @@ struct dm_bufio_client *dm_bufio_client_create(struct block_device *bdev, unsign
1541 BUG_ON(block_size < 1 << SECTOR_SHIFT || 1541 BUG_ON(block_size < 1 << SECTOR_SHIFT ||
1542 (block_size & (block_size - 1))); 1542 (block_size & (block_size - 1)));
1543 1543
1544 c = kmalloc(sizeof(*c), GFP_KERNEL); 1544 c = kzalloc(sizeof(*c), GFP_KERNEL);
1545 if (!c) { 1545 if (!c) {
1546 r = -ENOMEM; 1546 r = -ENOMEM;
1547 goto bad_client; 1547 goto bad_client;
diff --git a/drivers/md/dm-cache-target.c b/drivers/md/dm-cache-target.c
index 5f054c44b485..2c63326638b6 100644
--- a/drivers/md/dm-cache-target.c
+++ b/drivers/md/dm-cache-target.c
@@ -231,7 +231,7 @@ struct cache {
231 /* 231 /*
232 * cache_size entries, dirty if set 232 * cache_size entries, dirty if set
233 */ 233 */
234 dm_cblock_t nr_dirty; 234 atomic_t nr_dirty;
235 unsigned long *dirty_bitset; 235 unsigned long *dirty_bitset;
236 236
237 /* 237 /*
@@ -492,7 +492,7 @@ static bool is_dirty(struct cache *cache, dm_cblock_t b)
492static void set_dirty(struct cache *cache, dm_oblock_t oblock, dm_cblock_t cblock) 492static void set_dirty(struct cache *cache, dm_oblock_t oblock, dm_cblock_t cblock)
493{ 493{
494 if (!test_and_set_bit(from_cblock(cblock), cache->dirty_bitset)) { 494 if (!test_and_set_bit(from_cblock(cblock), cache->dirty_bitset)) {
495 cache->nr_dirty = to_cblock(from_cblock(cache->nr_dirty) + 1); 495 atomic_inc(&cache->nr_dirty);
496 policy_set_dirty(cache->policy, oblock); 496 policy_set_dirty(cache->policy, oblock);
497 } 497 }
498} 498}
@@ -501,8 +501,7 @@ static void clear_dirty(struct cache *cache, dm_oblock_t oblock, dm_cblock_t cbl
501{ 501{
502 if (test_and_clear_bit(from_cblock(cblock), cache->dirty_bitset)) { 502 if (test_and_clear_bit(from_cblock(cblock), cache->dirty_bitset)) {
503 policy_clear_dirty(cache->policy, oblock); 503 policy_clear_dirty(cache->policy, oblock);
504 cache->nr_dirty = to_cblock(from_cblock(cache->nr_dirty) - 1); 504 if (atomic_dec_return(&cache->nr_dirty) == 0)
505 if (!from_cblock(cache->nr_dirty))
506 dm_table_event(cache->ti->table); 505 dm_table_event(cache->ti->table);
507 } 506 }
508} 507}
@@ -2269,7 +2268,7 @@ static int cache_create(struct cache_args *ca, struct cache **result)
2269 atomic_set(&cache->quiescing_ack, 0); 2268 atomic_set(&cache->quiescing_ack, 0);
2270 2269
2271 r = -ENOMEM; 2270 r = -ENOMEM;
2272 cache->nr_dirty = 0; 2271 atomic_set(&cache->nr_dirty, 0);
2273 cache->dirty_bitset = alloc_bitset(from_cblock(cache->cache_size)); 2272 cache->dirty_bitset = alloc_bitset(from_cblock(cache->cache_size));
2274 if (!cache->dirty_bitset) { 2273 if (!cache->dirty_bitset) {
2275 *error = "could not allocate dirty bitset"; 2274 *error = "could not allocate dirty bitset";
@@ -2808,7 +2807,7 @@ static void cache_status(struct dm_target *ti, status_type_t type,
2808 2807
2809 residency = policy_residency(cache->policy); 2808 residency = policy_residency(cache->policy);
2810 2809
2811 DMEMIT("%u %llu/%llu %u %llu/%llu %u %u %u %u %u %u %llu ", 2810 DMEMIT("%u %llu/%llu %u %llu/%llu %u %u %u %u %u %u %lu ",
2812 (unsigned)(DM_CACHE_METADATA_BLOCK_SIZE >> SECTOR_SHIFT), 2811 (unsigned)(DM_CACHE_METADATA_BLOCK_SIZE >> SECTOR_SHIFT),
2813 (unsigned long long)(nr_blocks_metadata - nr_free_blocks_metadata), 2812 (unsigned long long)(nr_blocks_metadata - nr_free_blocks_metadata),
2814 (unsigned long long)nr_blocks_metadata, 2813 (unsigned long long)nr_blocks_metadata,
@@ -2821,7 +2820,7 @@ static void cache_status(struct dm_target *ti, status_type_t type,
2821 (unsigned) atomic_read(&cache->stats.write_miss), 2820 (unsigned) atomic_read(&cache->stats.write_miss),
2822 (unsigned) atomic_read(&cache->stats.demotion), 2821 (unsigned) atomic_read(&cache->stats.demotion),
2823 (unsigned) atomic_read(&cache->stats.promotion), 2822 (unsigned) atomic_read(&cache->stats.promotion),
2824 (unsigned long long) from_cblock(cache->nr_dirty)); 2823 (unsigned long) atomic_read(&cache->nr_dirty));
2825 2824
2826 if (writethrough_mode(&cache->features)) 2825 if (writethrough_mode(&cache->features))
2827 DMEMIT("1 writethrough "); 2826 DMEMIT("1 writethrough ");
diff --git a/drivers/staging/rtl8723au/os_dep/usb_intf.c b/drivers/staging/rtl8723au/os_dep/usb_intf.c
index 8b25c1aa2025..ebb19b22f47f 100644
--- a/drivers/staging/rtl8723au/os_dep/usb_intf.c
+++ b/drivers/staging/rtl8723au/os_dep/usb_intf.c
@@ -530,8 +530,10 @@ int rtw_resume_process23a(struct rtw_adapter *padapter)
530 pwrpriv->bkeepfwalive = false; 530 pwrpriv->bkeepfwalive = false;
531 531
532 DBG_8723A("bkeepfwalive(%x)\n", pwrpriv->bkeepfwalive); 532 DBG_8723A("bkeepfwalive(%x)\n", pwrpriv->bkeepfwalive);
533 if (pm_netdev_open23a(pnetdev, true) != 0) 533 if (pm_netdev_open23a(pnetdev, true) != 0) {
534 up(&pwrpriv->lock);
534 goto exit; 535 goto exit;
536 }
535 537
536 netif_device_attach(pnetdev); 538 netif_device_attach(pnetdev);
537 netif_carrier_on(pnetdev); 539 netif_carrier_on(pnetdev);
diff --git a/drivers/staging/vt6655/bssdb.c b/drivers/staging/vt6655/bssdb.c
index 59679cd46816..69b80e80b011 100644
--- a/drivers/staging/vt6655/bssdb.c
+++ b/drivers/staging/vt6655/bssdb.c
@@ -981,7 +981,7 @@ start:
981 pDevice->byERPFlag &= ~(WLAN_SET_ERP_USE_PROTECTION(1)); 981 pDevice->byERPFlag &= ~(WLAN_SET_ERP_USE_PROTECTION(1));
982 } 982 }
983 983
984 { 984 if (pDevice->eCommandState == WLAN_ASSOCIATE_WAIT) {
985 pDevice->byReAssocCount++; 985 pDevice->byReAssocCount++;
986 /* 10 sec timeout */ 986 /* 10 sec timeout */
987 if ((pDevice->byReAssocCount > 10) && (!pDevice->bLinkPass)) { 987 if ((pDevice->byReAssocCount > 10) && (!pDevice->bLinkPass)) {
diff --git a/drivers/staging/vt6655/device_main.c b/drivers/staging/vt6655/device_main.c
index 1d3908d044d0..5a5fd937a442 100644
--- a/drivers/staging/vt6655/device_main.c
+++ b/drivers/staging/vt6655/device_main.c
@@ -2318,6 +2318,7 @@ static irqreturn_t device_intr(int irq, void *dev_instance) {
2318 int handled = 0; 2318 int handled = 0;
2319 unsigned char byData = 0; 2319 unsigned char byData = 0;
2320 int ii = 0; 2320 int ii = 0;
2321 unsigned long flags;
2321 2322
2322 MACvReadISR(pDevice->PortOffset, &pDevice->dwIsr); 2323 MACvReadISR(pDevice->PortOffset, &pDevice->dwIsr);
2323 2324
@@ -2331,7 +2332,8 @@ static irqreturn_t device_intr(int irq, void *dev_instance) {
2331 2332
2332 handled = 1; 2333 handled = 1;
2333 MACvIntDisable(pDevice->PortOffset); 2334 MACvIntDisable(pDevice->PortOffset);
2334 spin_lock_irq(&pDevice->lock); 2335
2336 spin_lock_irqsave(&pDevice->lock, flags);
2335 2337
2336 //Make sure current page is 0 2338 //Make sure current page is 0
2337 VNSvInPortB(pDevice->PortOffset + MAC_REG_PAGE1SEL, &byOrgPageSel); 2339 VNSvInPortB(pDevice->PortOffset + MAC_REG_PAGE1SEL, &byOrgPageSel);
@@ -2560,7 +2562,8 @@ static irqreturn_t device_intr(int irq, void *dev_instance) {
2560 if (byOrgPageSel == 1) 2562 if (byOrgPageSel == 1)
2561 MACvSelectPage1(pDevice->PortOffset); 2563 MACvSelectPage1(pDevice->PortOffset);
2562 2564
2563 spin_unlock_irq(&pDevice->lock); 2565 spin_unlock_irqrestore(&pDevice->lock, flags);
2566
2564 MACvIntEnable(pDevice->PortOffset, IMR_MASK_VALUE); 2567 MACvIntEnable(pDevice->PortOffset, IMR_MASK_VALUE);
2565 2568
2566 return IRQ_RETVAL(handled); 2569 return IRQ_RETVAL(handled);