Skip to contentSkip to conversation

pm80xx: fix for memory region free

PATCH Superseded Anand 3 participants 5 messages Mar 20, 2013 – Apr 12, 2013 1 message not in the archive

Subsystems (2)

v3 of 5 Superseded Latest is v5 →

lore
Share & tools
lore

Anand

author
#0 lore raw

PATCH v3 1/12 pm80xx: fix for memory region free

Quoted 1 line

From 700bfe79294e9f9e1a5def178af52b13928902a9 Mon Sep 17 00:00:00 2001

From: Sakthivel K <[email protected]>
Date: Mon, 4 Feb 2013 12:10:02 +0530
Subject: [PATCH V3 01/12] pm80xx: fix for memory region free

All memory regions are allocated based on variables total_len and alignment but free was based on element_size.

---
 drivers/scsi/pm8001/pm8001_init.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)
drivers/scsi/pm8001/pm8001_init.c +2 -1
index 4c9fe73..3d5e522 100644
@@ -140,7 +140,8 @@ static void pm8001_free(struct pm8001_hba_info *pm8001_ha)
 	for (i = 0; i < USI_MAX_MEMCNT; i++) {
 		if (pm8001_ha->memoryMap.region[i].virt_ptr != NULL) {
 			pci_free_consistent(pm8001_ha->pdev,
-				pm8001_ha->memoryMap.region[i].element_size,
+				(pm8001_ha->memoryMap.region[i].total_len +
+				pm8001_ha->memoryMap.region[i].alignment),
 				pm8001_ha->memoryMap.region[i].virt_ptr,
 				pm8001_ha->memoryMap.region[i].phys_addr);
 			}
Signature · 1 line
1.7.1
Quoted 1 line

From 700bfe79294e9f9e1a5def178af52b13928902a9 Mon Sep 17 00:00:00 2001

From: Sakthivel K <[email protected]>
Date: Mon, 4 Feb 2013 12:10:02 +0530
Subject: [PATCH V3 01/12] pm80xx: fix for memory region free

All memory regions are allocated based on variables total_len and alignment but free was based on element_size.

---
 drivers/scsi/pm8001/pm8001_init.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)
drivers/scsi/pm8001/pm8001_init.c +2 -1
index 4c9fe73..3d5e522 100644
@@ -140,7 +140,8 @@ static void pm8001_free(struct pm8001_hba_info *pm8001_ha)
 	for (i = 0; i < USI_MAX_MEMCNT; i++) {
 		if (pm8001_ha->memoryMap.region[i].virt_ptr != NULL) {
 			pci_free_consistent(pm8001_ha->pdev,
-				pm8001_ha->memoryMap.region[i].element_size,
+				(pm8001_ha->memoryMap.region[i].total_len +
+				pm8001_ha->memoryMap.region[i].alignment),
 				pm8001_ha->memoryMap.region[i].virt_ptr,
 				pm8001_ha->memoryMap.region[i].phys_addr);
 			}
Signature · 1 line
1.7.1
maintainer
#1 lore raw
Quoted 4 lines · Anand
Quoted 1 line

From 700bfe79294e9f9e1a5def178af52b13928902a9 Mon Sep 17 00:00:00 2001

From: Sakthivel K <[email protected]>
Date: Mon, 4 Feb 2013 12:10:02 +0530
Subject: [PATCH V3 01/12] pm80xx: fix for memory region free

This one is already upstream:

commit bfb4809f7fff2f2db3d0de41ea4f49fd3f2f0aa4

Author: Sakthivel K <[email protected]>
Date:   Mon Feb 4 12:10:02 2013 +0530
    [SCSI] pm80xx: fix for memory region free

James

maintainer
#2 lore raw
In reply to Anand
Quoted 7 lines · Anand
Quoted 1 line

From 700bfe79294e9f9e1a5def178af52b13928902a9 Mon Sep 17 00:00:00 2001

From: Sakthivel K <[email protected]>
Date: Mon, 4 Feb 2013 12:10:02 +0530
Subject: [PATCH V3 01/12] pm80xx: fix for memory region free

All memory regions are allocated based on variables total_len and alignment but free was based on element_size.

This patch doesn't compile. It's giving

ERROR: "pm8001_80xx_dispatch" [drivers/scsi/pm8001/pm8001.ko] undefined! make[1]: *** [__modpost] Error 1

This is because of this hunk:

Quoted 5 lines
(quoted diff) +1 -0
@@ -44,8 +44,16 @@
 
 static struct scsi_transport_template *pm8001_stt;
 
+/**

Review line 56

Quoted 10 lines
(quoted diff) +8 -1
+ * chip info structure to identify chip key functionality as
+ * encryption available/not, no of ports, hw specific function ref
+ */
 static const struct pm8001_chip_info pm8001_chips[] = {
-	[chip_8001] = {  8, &pm8001_8001_dispatch,},
+	[chip_8001] = {0,  8, &pm8001_8001_dispatch,},
+	[chip_8008] = {0,  8, &pm8001_80xx_dispatch,},
+	[chip_8009] = {1,  8, &pm8001_80xx_dispatch,},
+	[chip_8018] = {0,  16, &pm8001_80xx_dispatch,},
+	[chip_8019] = {1,  16, &pm8001_80xx_dispatch,},

But the structure isn't defined until patch 06/12. This patch series has to be bisectable and buildable. That means each individual patch must apply, compile and run in sequence. Please fix this.

Thanks,

James

#3 lore raw

Hi James,

Thanks for the feedback.

We have resubmitted all the patches starting from 1st patch in this V3 patchset. The first patch (given below) does not contain pm8001_80xx_dispatch reference.
Maybe you have already applied patch 1 and 2 from earlier patchset and trying to apply patch 1 from this V3 patchset?

(quoted diff) +0 -0

b/drivers/scsi/pm8001/pm8001_init.c
index 4c9fe73..3d5e522 100644

drivers/scsi/pm8001/pm8001_init.c +0 -0
@@ -140,7 +140,8 @@ static void pm8001_free(struct pm8001_hba_info

*pm8001_ha)

        for (i = 0; i < USI_MAX_MEMCNT; i++) {
                if (pm8001_ha->memoryMap.region[i].virt_ptr != NULL) {
                        pci_free_consistent(pm8001_ha->pdev,

-
pm8001_ha->memoryMap.region[i].element_size,
+
(pm8001_ha->memoryMap.region[i].total_len +
+
pm8001_ha->memoryMap.region[i].alignment),

                                pm8001_ha->memoryMap.region[i].virt_ptr,
pm8001_ha->memoryMap.region[i].phys_addr);
                        }

--
1.7.1

We have applied the patches one by one and compiled each one of them in sequence to check for any errors as you had suggested and we did not encounter
compilation errors after applying each patch.

Regards
Anand

-----Original Message-----
From: James Bottomley [mailto:[email protected]]
Sent: Thursday, April 11, 2013 1:43 AM
To: Anand Kumar Santhanam
Cc: [email protected]; Harry Yang; Rich Bono; [email protected]; Sangeetha Gnanasekaran; [email protected]; Vishwanath Maram
Subject: Re: [PATCH V3 01/12] pm80xx: fix for memory region free

Quoted 8 lines · Anand
Quoted 2 lines

From 700bfe79294e9f9e1a5def178af52b13928902a9 Mon Sep 17 00:00:00 2001

From: Sakthivel K <[email protected]>
Date: Mon, 4 Feb 2013 12:10:02 +0530
Subject: [PATCH V3 01/12] pm80xx: fix for memory region free

All memory regions are allocated based on variables total_len and alignment but free was based on element_size.

This patch doesn't compile. It's giving

ERROR: "pm8001_80xx_dispatch" [drivers/scsi/pm8001/pm8001.ko] undefined! make[1]: *** [__modpost] Error 1

This is because of this hunk:

Quoted 5 lines
(quoted diff) +1 -0
@@ -44,8 +44,16 @@
 
 static struct scsi_transport_template *pm8001_stt;
 
+/**

Review line 56

Quoted 10 lines
(quoted diff) +8 -1
+ * chip info structure to identify chip key functionality as
+ * encryption available/not, no of ports, hw specific function ref  
+*/
 static const struct pm8001_chip_info pm8001_chips[] = {
-	[chip_8001] = {  8, &pm8001_8001_dispatch,},
+	[chip_8001] = {0,  8, &pm8001_8001_dispatch,},
+	[chip_8008] = {0,  8, &pm8001_80xx_dispatch,},
+	[chip_8009] = {1,  8, &pm8001_80xx_dispatch,},
+	[chip_8018] = {0,  16, &pm8001_80xx_dispatch,},
+	[chip_8019] = {1,  16, &pm8001_80xx_dispatch,},

But the structure isn't defined until patch 06/12. This patch series has to be bisectable and buildable. That means each individual patch must apply, compile and run in sequence. Please fix this.

Thanks,

James

A message that is not in the archive (sent off-list or not yet received): [email protected]_nt.nt.pmc-sierra.bc.ca

#5 lore raw

Hi James,

Are you still seeing compilation issue? Do we need to rework on this patchset? Pls let us know.

Regards
Anand

-----Original Message-----
From: Anand Kumar Santhanam
Sent: Thursday, April 11, 2013 12:05 PM
To: 'James Bottomley'
Cc: '[email protected]'; Harry Yang; Rich Bono; '[email protected]'; Sangeetha Gnanasekaran; '[email protected]'; Vishwanath Maram
Subject: RE: [PATCH V3 01/12] pm80xx: fix for memory region free

Hi James,

Thanks for the feedback.

We have resubmitted all the patches starting from 1st patch in this V3 patchset. The first patch (given below) does not contain pm8001_80xx_dispatch reference.
Maybe you have already applied patch 1 and 2 from earlier patchset and trying to apply patch 1 from this V3 patchset?

(quoted diff) +0 -0

b/drivers/scsi/pm8001/pm8001_init.c
index 4c9fe73..3d5e522 100644

drivers/scsi/pm8001/pm8001_init.c +0 -0
@@ -140,7 +140,8 @@ static void pm8001_free(struct pm8001_hba_info

*pm8001_ha)

        for (i = 0; i < USI_MAX_MEMCNT; i++) {
                if (pm8001_ha->memoryMap.region[i].virt_ptr != NULL) {
                        pci_free_consistent(pm8001_ha->pdev,

-
pm8001_ha->memoryMap.region[i].element_size,
+
(pm8001_ha->memoryMap.region[i].total_len +
+
+ pm8001_ha->memoryMap.region[i].alignment),

                                pm8001_ha->memoryMap.region[i].virt_ptr,
pm8001_ha->memoryMap.region[i].phys_addr);
                        }

--
1.7.1

We have applied the patches one by one and compiled each one of them in sequence to check for any errors as you had suggested and we did not encounter compilation errors after applying each patch.

Regards
Anand

-----Original Message-----
From: James Bottomley [mailto:[email protected]]
Sent: Thursday, April 11, 2013 1:43 AM
To: Anand Kumar Santhanam
Cc: [email protected]; Harry Yang; Rich Bono; [email protected]; Sangeetha Gnanasekaran; [email protected]; Vishwanath Maram
Subject: Re: [PATCH V3 01/12] pm80xx: fix for memory region free

Quoted 8 lines · Anand
Quoted 2 lines

From 700bfe79294e9f9e1a5def178af52b13928902a9 Mon Sep 17 00:00:00 2001

From: Sakthivel K <[email protected]>
Date: Mon, 4 Feb 2013 12:10:02 +0530
Subject: [PATCH V3 01/12] pm80xx: fix for memory region free

All memory regions are allocated based on variables total_len and alignment but free was based on element_size.

This patch doesn't compile. It's giving

ERROR: "pm8001_80xx_dispatch" [drivers/scsi/pm8001/pm8001.ko] undefined! make[1]: *** [__modpost] Error 1

This is because of this hunk:

Quoted 4 lines
(quoted diff) +0 -0
@@ -44,8 +44,16 @@
 
 static struct scsi_transport_template *pm8001_stt;
 

Review line 55

Quoted 10 lines
(quoted diff) +8 -1
+/**
+ * chip info structure to identify chip key functionality as
+ * encryption available/not, no of ports, hw specific function ref */
 static const struct pm8001_chip_info pm8001_chips[] = {
-	[chip_8001] = {  8, &pm8001_8001_dispatch,},
+	[chip_8001] = {0,  8, &pm8001_8001_dispatch,},
+	[chip_8008] = {0,  8, &pm8001_80xx_dispatch,},
+	[chip_8009] = {1,  8, &pm8001_80xx_dispatch,},
+	[chip_8018] = {0,  16, &pm8001_80xx_dispatch,},
+	[chip_8019] = {1,  16, &pm8001_80xx_dispatch,},

But the structure isn't defined until patch 06/12. This patch series has to be bisectable and buildable. That means each individual patch must apply, compile and run in sequence. Please fix this.

Thanks,

James