* [PATCH 0/9] powerpc/powernv: Fix sparse warnings for PCI files
@ 2016-08-02 4:10 Gavin Shan
2016-08-02 4:10 ` [PATCH 1/9] powerpc/powernv: Pass CPU-endian PE number to opal_pci_eeh_freeze_clear() Gavin Shan
` (8 more replies)
0 siblings, 9 replies; 17+ messages in thread
From: Gavin Shan @ 2016-08-02 4:10 UTC (permalink / raw)
To: linuxppc-dev; +Cc: paulus, mpe, Gavin Shan
This fixes the warnings reported from sparse. With this applied, no sparse
warning seen from below files with "make C=2 CF=-D__CHECK_ENDIAN__".
arch/powerpc/platforms/powernv/eeh-powernv.c
arch/powerpc/platforms/powernv/pci-ioda.c
arch/powerpc/platforms/powernv/pci.c
Gavin Shan (9):
powerpc/powernv: Pass CPU-endian PE number to
opal_pci_eeh_freeze_clear()
powerpc/powernv: Use CPU-endian hub diag-data type in
pnv_eeh_get_and_dump_hub_diag()
powerpc/powernv: Specify proper data type for PCI_SLOT_ID_PREFIX
powerpc/powernv: Use CPU-endian PEST in pnv_pci_dump_p7ioc_diag_data()
powerpc/powernv: Fix endian for return value from pnv_tce_get()
powerpc/powernv: Pass CPU-endian argument to xchg() in pnv_tce_xchg()
powerpc/powernv: Fix data type for @r in pnv_ioda_parse_m64_window()
powerpc/powernv: Fix data type of argument to __raw_{rm_, }writeq()
powerpc/powernv: Fix data type in pnv_pci_ioda2_table_do_free_pages()
arch/powerpc/include/asm/pnv-pci.h | 2 +-
arch/powerpc/platforms/powernv/eeh-powernv.c | 4 ++--
arch/powerpc/platforms/powernv/pci-ioda.c | 25 ++++++++++++++++---------
arch/powerpc/platforms/powernv/pci.c | 10 ++++++----
4 files changed, 25 insertions(+), 16 deletions(-)
--
2.1.0
^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH 1/9] powerpc/powernv: Pass CPU-endian PE number to opal_pci_eeh_freeze_clear()
2016-08-02 4:10 [PATCH 0/9] powerpc/powernv: Fix sparse warnings for PCI files Gavin Shan
@ 2016-08-02 4:10 ` Gavin Shan
2016-08-02 4:32 ` Russell Currey
2016-10-05 2:36 ` [1/9] " Michael Ellerman
2016-08-02 4:10 ` [PATCH 2/9] powerpc/powernv: Use CPU-endian hub diag-data type in pnv_eeh_get_and_dump_hub_diag() Gavin Shan
` (7 subsequent siblings)
8 siblings, 2 replies; 17+ messages in thread
From: Gavin Shan @ 2016-08-02 4:10 UTC (permalink / raw)
To: linuxppc-dev; +Cc: paulus, mpe, Gavin Shan
The PE number (@frozen_pe_no), filled by opal_pci_next_error() is in
big-endian format. It should be converted to CPU-dian before it is
passed to opal_pci_eeh_freeze_clear() when clearing the frozen state
if the PE is invalid one. As Michael Ellerman pointed out, the issue
is also detected by sparse:
gwshan@gwshan:~/sandbox/l$ make C=2 CF=-D__CHECK_ENDIAN__ \
arch/powerpc/platforms/powernv/eeh-powernv.o
:
arch/powerpc/platforms/powernv/eeh-powernv.c:1541:41: \
warning: incorrect type in argument 2 (different base types)
arch/powerpc/platforms/powernv/eeh-powernv.c:1541:41: \
expected unsigned long long [unsigned] [usertype] pe_number
arch/powerpc/platforms/powernv/eeh-powernv.c:1541:41: \
got restricted __be64 [addressable] [usertype] frozen_pe_no
This passes CPU-endian PE number to opal_pci_eeh_freeze_clear() and
it should be part of commit <0f36db77643b> ("powerpc/eeh: Fix wrong
printed PE number"), which was merged to 4.3 kernel.
Fixes: 71b540adffd9 ("powerpc/powernv: Don't escalate non-existing frozen PE")
Cc: stable@vger.kernel.org # v4.3+
Suggested-by: Paul Mackerras <paulus@samba.org>
Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
---
arch/powerpc/platforms/powernv/eeh-powernv.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/powerpc/platforms/powernv/eeh-powernv.c b/arch/powerpc/platforms/powernv/eeh-powernv.c
index 86544ea..75363d9 100644
--- a/arch/powerpc/platforms/powernv/eeh-powernv.c
+++ b/arch/powerpc/platforms/powernv/eeh-powernv.c
@@ -1538,7 +1538,7 @@ static int pnv_eeh_next_error(struct eeh_pe **pe)
/* Try best to clear it */
opal_pci_eeh_freeze_clear(phb->opal_id,
- frozen_pe_no,
+ be64_to_cpu(frozen_pe_no),
OPAL_EEH_ACTION_CLEAR_FREEZE_ALL);
ret = EEH_NEXT_ERR_NONE;
} else if ((*pe)->state & EEH_PE_ISOLATED ||
--
2.1.0
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 2/9] powerpc/powernv: Use CPU-endian hub diag-data type in pnv_eeh_get_and_dump_hub_diag()
2016-08-02 4:10 [PATCH 0/9] powerpc/powernv: Fix sparse warnings for PCI files Gavin Shan
2016-08-02 4:10 ` [PATCH 1/9] powerpc/powernv: Pass CPU-endian PE number to opal_pci_eeh_freeze_clear() Gavin Shan
@ 2016-08-02 4:10 ` Gavin Shan
2016-08-02 4:33 ` Russell Currey
2016-10-05 2:36 ` [2/9] " Michael Ellerman
2016-08-02 4:10 ` [PATCH 3/9] powerpc/powernv: Specify proper data type for PCI_SLOT_ID_PREFIX Gavin Shan
` (6 subsequent siblings)
8 siblings, 2 replies; 17+ messages in thread
From: Gavin Shan @ 2016-08-02 4:10 UTC (permalink / raw)
To: linuxppc-dev; +Cc: paulus, mpe, Gavin Shan
The hub diag-data type is filled with big-endian data by OPAL call
opal_pci_get_hub_diag_data(). We need convert it to CPU-endian value
before using it. The issue is reported by sparse as pointed by Michael
Ellerman:
gwshan@gwshan:~/sandbox/l$ make C=2 CF=-D__CHECK_ENDIAN__ \
arch/powerpc/platforms/powernv/eeh-powernv.o
:
arch/powerpc/platforms/powernv/eeh-powernv.c:1309:21: \
warning: restricted __be16 degrades to integer
arch/powerpc/platforms/powernv/eeh-powernv.c:1309:21: \
warning: restricted __be16 degrades to integer
arch/powerpc/platforms/powernv/eeh-powernv.c:1309:21: \
warning: restricted __be16 degrades to integer
arch/powerpc/platforms/powernv/eeh-powernv.c:1309:21: \
warning: restricted __be16 degrades to integer
arch/powerpc/platforms/powernv/eeh-powernv.c:1309:21: \
warning: restricted __be16 degrades to integer
This converts hub diag-data type to CPU-endian before using it in
pnv_eeh_get_and_dump_hub_diag().
Fixes: 2a485ad7c88d ("powerpc/powernv: Drop PHB operation next_error()")
Cc: stable@vger.kernel.org # v4.1+
Suggested-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
---
arch/powerpc/platforms/powernv/eeh-powernv.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/powerpc/platforms/powernv/eeh-powernv.c b/arch/powerpc/platforms/powernv/eeh-powernv.c
index 75363d9..8fec7a3 100644
--- a/arch/powerpc/platforms/powernv/eeh-powernv.c
+++ b/arch/powerpc/platforms/powernv/eeh-powernv.c
@@ -1306,7 +1306,7 @@ static void pnv_eeh_get_and_dump_hub_diag(struct pci_controller *hose)
return;
}
- switch (data->type) {
+ switch (be16_to_cpu(data->type)) {
case OPAL_P7IOC_DIAG_TYPE_RGC:
pr_info("P7IOC diag-data for RGC\n\n");
pnv_eeh_dump_hub_diag_common(data);
--
2.1.0
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 3/9] powerpc/powernv: Specify proper data type for PCI_SLOT_ID_PREFIX
2016-08-02 4:10 [PATCH 0/9] powerpc/powernv: Fix sparse warnings for PCI files Gavin Shan
2016-08-02 4:10 ` [PATCH 1/9] powerpc/powernv: Pass CPU-endian PE number to opal_pci_eeh_freeze_clear() Gavin Shan
2016-08-02 4:10 ` [PATCH 2/9] powerpc/powernv: Use CPU-endian hub diag-data type in pnv_eeh_get_and_dump_hub_diag() Gavin Shan
@ 2016-08-02 4:10 ` Gavin Shan
2016-10-05 2:36 ` [3/9] " Michael Ellerman
2016-08-02 4:10 ` [PATCH 4/9] powerpc/powernv: Use CPU-endian PEST in pnv_pci_dump_p7ioc_diag_data() Gavin Shan
` (5 subsequent siblings)
8 siblings, 1 reply; 17+ messages in thread
From: Gavin Shan @ 2016-08-02 4:10 UTC (permalink / raw)
To: linuxppc-dev; +Cc: paulus, mpe, Gavin Shan
This fixes the warning reported from sparse:
gwshan@gwshan:~/sandbox/l$ make C=2 CF=-D__CHECK_ENDIAN__ \
arch/powerpc/platforms/powernv/eeh-powernv.o
:
arch/powerpc/platforms/powernv/eeh-powernv.c:875:23: \
warning: constant 0x8000000000000000 is so big it is unsigned long
Fixes: ebe225312739 ("powerpc/powernv: Support PCI slot ID")
Suggested-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
---
arch/powerpc/include/asm/pnv-pci.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/powerpc/include/asm/pnv-pci.h b/arch/powerpc/include/asm/pnv-pci.h
index 0cbd813..62a36ed 100644
--- a/arch/powerpc/include/asm/pnv-pci.h
+++ b/arch/powerpc/include/asm/pnv-pci.h
@@ -15,7 +15,7 @@
#include <misc/cxl-base.h>
#include <asm/opal-api.h>
-#define PCI_SLOT_ID_PREFIX 0x8000000000000000
+#define PCI_SLOT_ID_PREFIX (1UL << 63)
#define PCI_SLOT_ID(phb_id, bdfn) \
(PCI_SLOT_ID_PREFIX | ((uint64_t)(bdfn) << 16) | (phb_id))
--
2.1.0
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 4/9] powerpc/powernv: Use CPU-endian PEST in pnv_pci_dump_p7ioc_diag_data()
2016-08-02 4:10 [PATCH 0/9] powerpc/powernv: Fix sparse warnings for PCI files Gavin Shan
` (2 preceding siblings ...)
2016-08-02 4:10 ` [PATCH 3/9] powerpc/powernv: Specify proper data type for PCI_SLOT_ID_PREFIX Gavin Shan
@ 2016-08-02 4:10 ` Gavin Shan
2016-10-05 2:36 ` [4/9] " Michael Ellerman
2016-08-02 4:10 ` [PATCH 5/9] powerpc/powernv: Fix endian for return value from pnv_tce_get() Gavin Shan
` (4 subsequent siblings)
8 siblings, 1 reply; 17+ messages in thread
From: Gavin Shan @ 2016-08-02 4:10 UTC (permalink / raw)
To: linuxppc-dev; +Cc: paulus, mpe, Gavin Shan
This fixes the warnings reported from sparse:
gwshan@gwshan:~/sandbox/l$ make C=2 CF=-D__CHECK_ENDIAN__ \
arch/powerpc/platforms/powernv/pci.o
:
arch/powerpc/platforms/powernv/pci.c:312:33: \
warning: restricted __be64 degrades to integer
arch/powerpc/platforms/powernv/pci.c:313:33: \
warning: restricted __be64 degrades to integer
Fixes: cee72d5bb489 ("powerpc/powernv: Display diag data on p7ioc EEH errors")
Cc: stable@vger.kernel.org # v3.3+
Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
---
arch/powerpc/platforms/powernv/pci.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/powerpc/platforms/powernv/pci.c b/arch/powerpc/platforms/powernv/pci.c
index 6701dd5..b32bafb 100644
--- a/arch/powerpc/platforms/powernv/pci.c
+++ b/arch/powerpc/platforms/powernv/pci.c
@@ -309,8 +309,8 @@ static void pnv_pci_dump_p7ioc_diag_data(struct pci_controller *hose,
be64_to_cpu(data->dma1ErrorLog1));
for (i = 0; i < OPAL_P7IOC_NUM_PEST_REGS; i++) {
- if ((data->pestA[i] >> 63) == 0 &&
- (data->pestB[i] >> 63) == 0)
+ if ((be64_to_cpu(data->pestA[i]) >> 63) == 0 &&
+ (be64_to_cpu(data->pestB[i]) >> 63) == 0)
continue;
pr_info("PE[%3d] A/B: %016llx %016llx\n",
--
2.1.0
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 5/9] powerpc/powernv: Fix endian for return value from pnv_tce_get()
2016-08-02 4:10 [PATCH 0/9] powerpc/powernv: Fix sparse warnings for PCI files Gavin Shan
` (3 preceding siblings ...)
2016-08-02 4:10 ` [PATCH 4/9] powerpc/powernv: Use CPU-endian PEST in pnv_pci_dump_p7ioc_diag_data() Gavin Shan
@ 2016-08-02 4:10 ` Gavin Shan
2016-08-02 4:10 ` [PATCH 6/9] powerpc/powernv: Pass CPU-endian argument to xchg() in pnv_tce_xchg() Gavin Shan
` (3 subsequent siblings)
8 siblings, 0 replies; 17+ messages in thread
From: Gavin Shan @ 2016-08-02 4:10 UTC (permalink / raw)
To: linuxppc-dev; +Cc: paulus, mpe, Gavin Shan, Alexey Kardashevskiy
This fixes the warning reported from sparse:
gwshan@gwshan:~/sandbox/l$ make C=2 CF=-D__CHECK_ENDIAN__ \
arch/powerpc/platforms/powernv/pci.o
:
arch/powerpc/platforms/powernv/pci.c:761:16: \
warning: incorrect type in return expression (different base types)
arch/powerpc/platforms/powernv/pci.c:761:16: \
expected unsigned long
arch/powerpc/platforms/powernv/pci.c:761:16: \
got restricted __be64 [usertype] <noident>
Cc: Alexey Kardashevskiy <aik@ozlabs.ru>
Fixes: c5bb44edee19 ("powerpc/powernv: Implement accessor to TCE entry")
Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
---
arch/powerpc/platforms/powernv/pci.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/powerpc/platforms/powernv/pci.c b/arch/powerpc/platforms/powernv/pci.c
index b32bafb..9a26a57 100644
--- a/arch/powerpc/platforms/powernv/pci.c
+++ b/arch/powerpc/platforms/powernv/pci.c
@@ -758,7 +758,7 @@ void pnv_tce_free(struct iommu_table *tbl, long index, long npages)
unsigned long pnv_tce_get(struct iommu_table *tbl, long index)
{
- return *(pnv_tce(tbl, index - tbl->it_offset));
+ return (__force unsigned long)(*(pnv_tce(tbl, index - tbl->it_offset)));
}
struct iommu_table *pnv_pci_table_alloc(int nid)
--
2.1.0
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 6/9] powerpc/powernv: Pass CPU-endian argument to xchg() in pnv_tce_xchg()
2016-08-02 4:10 [PATCH 0/9] powerpc/powernv: Fix sparse warnings for PCI files Gavin Shan
` (4 preceding siblings ...)
2016-08-02 4:10 ` [PATCH 5/9] powerpc/powernv: Fix endian for return value from pnv_tce_get() Gavin Shan
@ 2016-08-02 4:10 ` Gavin Shan
2016-08-02 4:10 ` [PATCH 7/9] powerpc/powernv: Fix data type for @r in pnv_ioda_parse_m64_window() Gavin Shan
` (2 subsequent siblings)
8 siblings, 0 replies; 17+ messages in thread
From: Gavin Shan @ 2016-08-02 4:10 UTC (permalink / raw)
To: linuxppc-dev; +Cc: paulus, mpe, Gavin Shan, Alexey Kardashevskiy
This fixes warning reported from sparse:
gwshan@gwshan:~/sandbox/l$ make C=2 CF=-D__CHECK_ENDIAN__ \
arch/powerpc/platforms/powernv/pci.o
arch/powerpc/platforms/powernv/pci.c:740:18: \
warning: cast from restricted __be64
arch/powerpc/platforms/powernv/pci.c:740:18: \
warning: cast to restricted __be64
arch/powerpc/platforms/powernv/pci.c:740:18: \
warning: cast from restricted __be64
arch/powerpc/platforms/powernv/pci.c:740:18: \
warning: cast to restricted __be64
Cc: Alexey Kardashevskiy <aik@ozlabs.ru>
Fixes: 802a345183c0 ("powerpc/powernv/ioda: Fix endianness when reading TCEs")
Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
---
arch/powerpc/platforms/powernv/pci.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/arch/powerpc/platforms/powernv/pci.c b/arch/powerpc/platforms/powernv/pci.c
index 9a26a57..4e385f9 100644
--- a/arch/powerpc/platforms/powernv/pci.c
+++ b/arch/powerpc/platforms/powernv/pci.c
@@ -737,7 +737,9 @@ int pnv_tce_xchg(struct iommu_table *tbl, long index,
if (newtce & TCE_PCI_WRITE)
newtce |= TCE_PCI_READ;
- oldtce = be64_to_cpu(xchg(pnv_tce(tbl, idx), cpu_to_be64(newtce)));
+ oldtce = be64_to_cpu((__force __be64)xchg(
+ (unsigned long *)pnv_tce(tbl, idx),
+ (__force unsigned long)cpu_to_be64(newtce)));
*hpa = oldtce & ~(TCE_PCI_READ | TCE_PCI_WRITE);
*direction = iommu_tce_direction(oldtce);
--
2.1.0
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 7/9] powerpc/powernv: Fix data type for @r in pnv_ioda_parse_m64_window()
2016-08-02 4:10 [PATCH 0/9] powerpc/powernv: Fix sparse warnings for PCI files Gavin Shan
` (5 preceding siblings ...)
2016-08-02 4:10 ` [PATCH 6/9] powerpc/powernv: Pass CPU-endian argument to xchg() in pnv_tce_xchg() Gavin Shan
@ 2016-08-02 4:10 ` Gavin Shan
2016-10-05 2:36 ` [7/9] " Michael Ellerman
2016-08-02 4:10 ` [PATCH 8/9] powerpc/powernv: Fix data type of argument to __raw_{rm_, }writeq() Gavin Shan
2016-08-02 4:10 ` [PATCH 9/9] powerpc/powernv: Fix data type in pnv_pci_ioda2_table_do_free_pages() Gavin Shan
8 siblings, 1 reply; 17+ messages in thread
From: Gavin Shan @ 2016-08-02 4:10 UTC (permalink / raw)
To: linuxppc-dev; +Cc: paulus, mpe, Gavin Shan
This fixes warning reported from sparse:
gwshan@gwshan:~/sandbox/l$ make C=2 CF=-D__CHECK_ENDIAN__ \
arch/powerpc/platforms/powernv/pci-ioda.o
:
arch/powerpc/platforms/powernv/pci-ioda.c:451:49: \
warning: incorrect type in argument 2 (different base types)
arch/powerpc/platforms/powernv/pci-ioda.c:451:49: \
expected restricted __be32 const [usertype] *addr
arch/powerpc/platforms/powernv/pci-ioda.c:451:49: \
got unsigned int const [usertype] *
arch/powerpc/platforms/powernv/pci-ioda.c:452:50: \
warning: incorrect type in argument 1 (different base types)
arch/powerpc/platforms/powernv/pci-ioda.c:452:50: \
expected restricted __be32 const [usertype] *cell
arch/powerpc/platforms/powernv/pci-ioda.c:452:50: \
got unsigned int const [usertype] *
arch/powerpc/platforms/powernv/pci-ioda.c:454:35: \
warning: incorrect type in argument 1 (different base types)
arch/powerpc/platforms/powernv/pci-ioda.c:454:35: \
expected restricted __be32 const [usertype] *cell
arch/powerpc/platforms/powernv/pci-ioda.c:454:35: \
got unsigned int const [usertype] *[assigned] r
Fixes: 262af557dd75 ("powerpc/powernv: Enable M64 aperatus for PHB3")
Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
---
arch/powerpc/platforms/powernv/pci-ioda.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/powerpc/platforms/powernv/pci-ioda.c b/arch/powerpc/platforms/powernv/pci-ioda.c
index 891fc4a..ac60190 100644
--- a/arch/powerpc/platforms/powernv/pci-ioda.c
+++ b/arch/powerpc/platforms/powernv/pci-ioda.c
@@ -402,7 +402,7 @@ static void __init pnv_ioda_parse_m64_window(struct pnv_phb *phb)
struct device_node *dn = hose->dn;
struct resource *res;
u32 m64_range[2], i;
- const u32 *r;
+ const __be32 *r;
u64 pci_addr;
if (phb->type != PNV_PHB_IODA1 && phb->type != PNV_PHB_IODA2) {
--
2.1.0
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 8/9] powerpc/powernv: Fix data type of argument to __raw_{rm_, }writeq()
2016-08-02 4:10 [PATCH 0/9] powerpc/powernv: Fix sparse warnings for PCI files Gavin Shan
` (6 preceding siblings ...)
2016-08-02 4:10 ` [PATCH 7/9] powerpc/powernv: Fix data type for @r in pnv_ioda_parse_m64_window() Gavin Shan
@ 2016-08-02 4:10 ` Gavin Shan
2016-08-02 4:10 ` [PATCH 9/9] powerpc/powernv: Fix data type in pnv_pci_ioda2_table_do_free_pages() Gavin Shan
8 siblings, 0 replies; 17+ messages in thread
From: Gavin Shan @ 2016-08-02 4:10 UTC (permalink / raw)
To: linuxppc-dev; +Cc: paulus, mpe, Gavin Shan
The value passed to __raw_rm_writeq() and __raw_writeq() should be "u64"
and "unsigned long". This fixes warning reported from sparse:
gwshan@gwshan:~/sandbox/l$ make C=2 CF=-D__CHECK_ENDIAN__ \
arch/powerpc/platforms/powernv/pci-ioda.o
arch/powerpc/platforms/powernv/pci-ioda.c:1794:41: \
warning: incorrect type in argument 1 (different base types)
arch/powerpc/platforms/powernv/pci-ioda.c:1794:41: \
expected unsigned long long [unsigned] [usertype] val
arch/powerpc/platforms/powernv/pci-ioda.c:1794:41: \
got restricted __be64 [usertype] <noident>
arch/powerpc/platforms/powernv/pci-ioda.c:1796:38: \
warning: incorrect type in argument 1 (different base types)
arch/powerpc/platforms/powernv/pci-ioda.c:1796:38: \
expected unsigned long [unsigned] v
arch/powerpc/platforms/powernv/pci-ioda.c:1796:38: \
got restricted __be64 [usertype] <noident>
Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
---
arch/powerpc/platforms/powernv/pci-ioda.c | 20 +++++++++++++-------
1 file changed, 13 insertions(+), 7 deletions(-)
diff --git a/arch/powerpc/platforms/powernv/pci-ioda.c b/arch/powerpc/platforms/powernv/pci-ioda.c
index ac60190..3d367ba 100644
--- a/arch/powerpc/platforms/powernv/pci-ioda.c
+++ b/arch/powerpc/platforms/powernv/pci-ioda.c
@@ -1791,9 +1791,11 @@ static void pnv_pci_p7ioc_tce_invalidate(struct iommu_table *tbl,
mb(); /* Ensure above stores are visible */
while (start <= end) {
if (rm)
- __raw_rm_writeq(cpu_to_be64(start), invalidate);
+ __raw_rm_writeq((__force u64)cpu_to_be64(start),
+ invalidate);
else
- __raw_writeq(cpu_to_be64(start), invalidate);
+ __raw_writeq((__force unsigned long)cpu_to_be64(start),
+ invalidate);
start += inc;
}
@@ -1858,9 +1860,11 @@ void pnv_pci_phb3_tce_invalidate_entire(struct pnv_phb *phb, bool rm)
mb(); /* Ensure previous TCE table stores are visible */
if (rm)
- __raw_rm_writeq(cpu_to_be64(val), invalidate);
+ __raw_rm_writeq((__force u64)cpu_to_be64(val),
+ invalidate);
else
- __raw_writeq(cpu_to_be64(val), invalidate);
+ __raw_writeq((__force unsigned long)cpu_to_be64(val),
+ invalidate);
}
static inline void pnv_pci_phb3_tce_invalidate_pe(struct pnv_ioda_pe *pe)
@@ -1870,7 +1874,7 @@ static inline void pnv_pci_phb3_tce_invalidate_pe(struct pnv_ioda_pe *pe)
unsigned long val = PHB3_TCE_KILL_INVAL_PE | (pe->pe_number & 0xFF);
mb(); /* Ensure above stores are visible */
- __raw_writeq(cpu_to_be64(val), invalidate);
+ __raw_writeq((__force unsigned long)cpu_to_be64(val), invalidate);
}
static void pnv_pci_phb3_tce_invalidate(struct pnv_ioda_pe *pe, bool rm,
@@ -1893,9 +1897,11 @@ static void pnv_pci_phb3_tce_invalidate(struct pnv_ioda_pe *pe, bool rm,
while (start <= end) {
if (rm)
- __raw_rm_writeq(cpu_to_be64(start), invalidate);
+ __raw_rm_writeq((__force u64)cpu_to_be64(start),
+ invalidate);
else
- __raw_writeq(cpu_to_be64(start), invalidate);
+ __raw_writeq((__force unsigned long)cpu_to_be64(start),
+ invalidate);
start += inc;
}
}
--
2.1.0
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 9/9] powerpc/powernv: Fix data type in pnv_pci_ioda2_table_do_free_pages()
2016-08-02 4:10 [PATCH 0/9] powerpc/powernv: Fix sparse warnings for PCI files Gavin Shan
` (7 preceding siblings ...)
2016-08-02 4:10 ` [PATCH 8/9] powerpc/powernv: Fix data type of argument to __raw_{rm_, }writeq() Gavin Shan
@ 2016-08-02 4:10 ` Gavin Shan
8 siblings, 0 replies; 17+ messages in thread
From: Gavin Shan @ 2016-08-02 4:10 UTC (permalink / raw)
To: linuxppc-dev; +Cc: paulus, mpe, Gavin Shan, Alexey Kardashevskiy
This fixes warning reported from sparse:
gwshan@gwshan:~/sandbox/l$ make C=2 CF=-D__CHECK_ENDIAN__ \
arch/powerpc/platforms/powernv/pci-ioda.o
:
arch/powerpc/platforms/powernv/pci-ioda.c:2647:45: \
warning: cast to restricted __be64
Cc: Alexey Kardashevskiy <aik@ozlabs.ru>
Fixes: bbb845c4bac8 ("powerpc/powernv: Implement multilevel TCE tables")
Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
---
arch/powerpc/platforms/powernv/pci-ioda.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/arch/powerpc/platforms/powernv/pci-ioda.c b/arch/powerpc/platforms/powernv/pci-ioda.c
index 3d367ba..cc2d28c 100644
--- a/arch/powerpc/platforms/powernv/pci-ioda.c
+++ b/arch/powerpc/platforms/powernv/pci-ioda.c
@@ -2644,7 +2644,8 @@ static void pnv_pci_ioda2_table_do_free_pages(__be64 *addr,
u64 *tmp = (u64 *) addr_ul;
for (i = 0; i < size; ++i) {
- unsigned long hpa = be64_to_cpu(tmp[i]);
+ unsigned long hpa =
+ be64_to_cpu((__force __be64)(tmp[i]));
if (!(hpa & (TCE_PCI_READ | TCE_PCI_WRITE)))
continue;
--
2.1.0
^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: [PATCH 1/9] powerpc/powernv: Pass CPU-endian PE number to opal_pci_eeh_freeze_clear()
2016-08-02 4:10 ` [PATCH 1/9] powerpc/powernv: Pass CPU-endian PE number to opal_pci_eeh_freeze_clear() Gavin Shan
@ 2016-08-02 4:32 ` Russell Currey
2016-10-05 2:36 ` [1/9] " Michael Ellerman
1 sibling, 0 replies; 17+ messages in thread
From: Russell Currey @ 2016-08-02 4:32 UTC (permalink / raw)
To: Gavin Shan, linuxppc-dev; +Cc: paulus
On Tue, 2016-08-02 at 14:10 +1000, Gavin Shan wrote:
> The PE number (@frozen_pe_no), filled by opal_pci_next_error() is in
> big-endian format. It should be converted to CPU-dian before it is
> passed to opal_pci_eeh_freeze_clear() when clearing the frozen state
> if the PE is invalid one. As Michael Ellerman pointed out, the issue
> is also detected by sparse:
>
> gwshan@gwshan:~/sandbox/l$ make C=2 CF=-D__CHECK_ENDIAN__ \
> arch/powerpc/platforms/powernv/eeh-powernv.o
> :
> arch/powerpc/platforms/powernv/eeh-powernv.c:1541:41: \
> warning: incorrect type in argument 2 (different base types)
> arch/powerpc/platforms/powernv/eeh-powernv.c:1541:41: \
> expected unsigned long long [unsigned] [usertype] pe_number
> arch/powerpc/platforms/powernv/eeh-powernv.c:1541:41: \
> got restricted __be64 [addressable] [usertype] frozen_pe_no
>
> This passes CPU-endian PE number to opal_pci_eeh_freeze_clear() and
> it should be part of commit <0f36db77643b> ("powerpc/eeh: Fix wrong
> printed PE number"), which was merged to 4.3 kernel.
>
> Fixes: 71b540adffd9 ("powerpc/powernv: Don't escalate non-existing frozen PE")
> Cc: stable@vger.kernel.org # v4.3+
> Suggested-by: Paul Mackerras <paulus@samba.org>
> Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
> ---
Reviewed-by: Russell Currey <ruscur@russell.cc>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 2/9] powerpc/powernv: Use CPU-endian hub diag-data type in pnv_eeh_get_and_dump_hub_diag()
2016-08-02 4:10 ` [PATCH 2/9] powerpc/powernv: Use CPU-endian hub diag-data type in pnv_eeh_get_and_dump_hub_diag() Gavin Shan
@ 2016-08-02 4:33 ` Russell Currey
2016-10-05 2:36 ` [2/9] " Michael Ellerman
1 sibling, 0 replies; 17+ messages in thread
From: Russell Currey @ 2016-08-02 4:33 UTC (permalink / raw)
To: Gavin Shan, linuxppc-dev; +Cc: paulus
On Tue, 2016-08-02 at 14:10 +1000, Gavin Shan wrote:
> The hub diag-data type is filled with big-endian data by OPAL call
> opal_pci_get_hub_diag_data(). We need convert it to CPU-endian value
> before using it. The issue is reported by sparse as pointed by Michael
> Ellerman:
>
> gwshan@gwshan:~/sandbox/l$ make C=2 CF=-D__CHECK_ENDIAN__ \
> arch/powerpc/platforms/powernv/eeh-powernv.o
> :
> arch/powerpc/platforms/powernv/eeh-powernv.c:1309:21: \
> warning: restricted __be16 degrades to integer
> arch/powerpc/platforms/powernv/eeh-powernv.c:1309:21: \
> warning: restricted __be16 degrades to integer
> arch/powerpc/platforms/powernv/eeh-powernv.c:1309:21: \
> warning: restricted __be16 degrades to integer
> arch/powerpc/platforms/powernv/eeh-powernv.c:1309:21: \
> warning: restricted __be16 degrades to integer
> arch/powerpc/platforms/powernv/eeh-powernv.c:1309:21: \
> warning: restricted __be16 degrades to integer
>
> This converts hub diag-data type to CPU-endian before using it in
> pnv_eeh_get_and_dump_hub_diag().
>
> Fixes: 2a485ad7c88d ("powerpc/powernv: Drop PHB operation next_error()")
> Cc: stable@vger.kernel.org # v4.1+
> Suggested-by: Michael Ellerman <mpe@ellerman.id.au>
> Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
> ---
Reviewed-by: Russell Currey <ruscur@russell.cc>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [1/9] powerpc/powernv: Pass CPU-endian PE number to opal_pci_eeh_freeze_clear()
2016-08-02 4:10 ` [PATCH 1/9] powerpc/powernv: Pass CPU-endian PE number to opal_pci_eeh_freeze_clear() Gavin Shan
2016-08-02 4:32 ` Russell Currey
@ 2016-10-05 2:36 ` Michael Ellerman
1 sibling, 0 replies; 17+ messages in thread
From: Michael Ellerman @ 2016-10-05 2:36 UTC (permalink / raw)
To: Gavin Shan, linuxppc-dev; +Cc: paulus, Gavin Shan
On Tue, 2016-02-08 at 04:10:29 UTC, Gavin Shan wrote:
> The PE number (@frozen_pe_no), filled by opal_pci_next_error() is in
> big-endian format. It should be converted to CPU-dian before it is
> passed to opal_pci_eeh_freeze_clear() when clearing the frozen state
> if the PE is invalid one. As Michael Ellerman pointed out, the issue
> is also detected by sparse:
>
> gwshan@gwshan:~/sandbox/l$ make C=2 CF=-D__CHECK_ENDIAN__ \
> arch/powerpc/platforms/powernv/eeh-powernv.o
> :
> arch/powerpc/platforms/powernv/eeh-powernv.c:1541:41: \
> warning: incorrect type in argument 2 (different base types)
> arch/powerpc/platforms/powernv/eeh-powernv.c:1541:41: \
> expected unsigned long long [unsigned] [usertype] pe_number
> arch/powerpc/platforms/powernv/eeh-powernv.c:1541:41: \
> got restricted __be64 [addressable] [usertype] frozen_pe_no
>
> This passes CPU-endian PE number to opal_pci_eeh_freeze_clear() and
> it should be part of commit <0f36db77643b> ("powerpc/eeh: Fix wrong
> printed PE number"), which was merged to 4.3 kernel.
>
> Fixes: 71b540adffd9 ("powerpc/powernv: Don't escalate non-existing frozen PE")
> Cc: stable@vger.kernel.org # v4.3+
> Suggested-by: Paul Mackerras <paulus@samba.org>
> Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
> Reviewed-by: Russell Currey <ruscur@russell.cc>
Applied to powerpc next, thanks.
https://git.kernel.org/powerpc/c/d63e51b31e0b655ed0f581b8a8fd4c
cheers
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [2/9] powerpc/powernv: Use CPU-endian hub diag-data type in pnv_eeh_get_and_dump_hub_diag()
2016-08-02 4:10 ` [PATCH 2/9] powerpc/powernv: Use CPU-endian hub diag-data type in pnv_eeh_get_and_dump_hub_diag() Gavin Shan
2016-08-02 4:33 ` Russell Currey
@ 2016-10-05 2:36 ` Michael Ellerman
1 sibling, 0 replies; 17+ messages in thread
From: Michael Ellerman @ 2016-10-05 2:36 UTC (permalink / raw)
To: Gavin Shan, linuxppc-dev; +Cc: paulus, Gavin Shan
On Tue, 2016-02-08 at 04:10:30 UTC, Gavin Shan wrote:
> The hub diag-data type is filled with big-endian data by OPAL call
> opal_pci_get_hub_diag_data(). We need convert it to CPU-endian value
> before using it. The issue is reported by sparse as pointed by Michael
> Ellerman:
>
> gwshan@gwshan:~/sandbox/l$ make C=2 CF=-D__CHECK_ENDIAN__ \
> arch/powerpc/platforms/powernv/eeh-powernv.o
> :
> arch/powerpc/platforms/powernv/eeh-powernv.c:1309:21: \
> warning: restricted __be16 degrades to integer
> arch/powerpc/platforms/powernv/eeh-powernv.c:1309:21: \
> warning: restricted __be16 degrades to integer
> arch/powerpc/platforms/powernv/eeh-powernv.c:1309:21: \
> warning: restricted __be16 degrades to integer
> arch/powerpc/platforms/powernv/eeh-powernv.c:1309:21: \
> warning: restricted __be16 degrades to integer
> arch/powerpc/platforms/powernv/eeh-powernv.c:1309:21: \
> warning: restricted __be16 degrades to integer
>
> This converts hub diag-data type to CPU-endian before using it in
> pnv_eeh_get_and_dump_hub_diag().
>
> Fixes: 2a485ad7c88d ("powerpc/powernv: Drop PHB operation next_error()")
> Cc: stable@vger.kernel.org # v4.1+
> Suggested-by: Michael Ellerman <mpe@ellerman.id.au>
> Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
> Reviewed-by: Russell Currey <ruscur@russell.cc>
Applied to powerpc next, thanks.
https://git.kernel.org/powerpc/c/a7032132d7560a8434e1f54b71efd7
cheers
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [3/9] powerpc/powernv: Specify proper data type for PCI_SLOT_ID_PREFIX
2016-08-02 4:10 ` [PATCH 3/9] powerpc/powernv: Specify proper data type for PCI_SLOT_ID_PREFIX Gavin Shan
@ 2016-10-05 2:36 ` Michael Ellerman
0 siblings, 0 replies; 17+ messages in thread
From: Michael Ellerman @ 2016-10-05 2:36 UTC (permalink / raw)
To: Gavin Shan, linuxppc-dev; +Cc: paulus, Gavin Shan
On Tue, 2016-02-08 at 04:10:31 UTC, Gavin Shan wrote:
> This fixes the warning reported from sparse:
>
> gwshan@gwshan:~/sandbox/l$ make C=2 CF=-D__CHECK_ENDIAN__ \
> arch/powerpc/platforms/powernv/eeh-powernv.o
> :
> arch/powerpc/platforms/powernv/eeh-powernv.c:875:23: \
> warning: constant 0x8000000000000000 is so big it is unsigned long
>
> Fixes: ebe225312739 ("powerpc/powernv: Support PCI slot ID")
> Suggested-by: Michael Ellerman <mpe@ellerman.id.au>
> Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
Applied to powerpc next, thanks.
https://git.kernel.org/powerpc/c/066bcd785aac9c10e5f9b873f9bd2e
cheers
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [4/9] powerpc/powernv: Use CPU-endian PEST in pnv_pci_dump_p7ioc_diag_data()
2016-08-02 4:10 ` [PATCH 4/9] powerpc/powernv: Use CPU-endian PEST in pnv_pci_dump_p7ioc_diag_data() Gavin Shan
@ 2016-10-05 2:36 ` Michael Ellerman
0 siblings, 0 replies; 17+ messages in thread
From: Michael Ellerman @ 2016-10-05 2:36 UTC (permalink / raw)
To: Gavin Shan, linuxppc-dev; +Cc: paulus, Gavin Shan
On Tue, 2016-02-08 at 04:10:32 UTC, Gavin Shan wrote:
> This fixes the warnings reported from sparse:
>
> gwshan@gwshan:~/sandbox/l$ make C=2 CF=-D__CHECK_ENDIAN__ \
> arch/powerpc/platforms/powernv/pci.o
> :
> arch/powerpc/platforms/powernv/pci.c:312:33: \
> warning: restricted __be64 degrades to integer
> arch/powerpc/platforms/powernv/pci.c:313:33: \
> warning: restricted __be64 degrades to integer
>
> Fixes: cee72d5bb489 ("powerpc/powernv: Display diag data on p7ioc EEH errors")
> Cc: stable@vger.kernel.org # v3.3+
> Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
Applied to powerpc next, thanks.
https://git.kernel.org/powerpc/c/5adaf8629b193f185ca5a1665b9e77
cheers
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [7/9] powerpc/powernv: Fix data type for @r in pnv_ioda_parse_m64_window()
2016-08-02 4:10 ` [PATCH 7/9] powerpc/powernv: Fix data type for @r in pnv_ioda_parse_m64_window() Gavin Shan
@ 2016-10-05 2:36 ` Michael Ellerman
0 siblings, 0 replies; 17+ messages in thread
From: Michael Ellerman @ 2016-10-05 2:36 UTC (permalink / raw)
To: Gavin Shan, linuxppc-dev; +Cc: paulus, Gavin Shan
On Tue, 2016-02-08 at 04:10:35 UTC, Gavin Shan wrote:
> This fixes warning reported from sparse:
>
> gwshan@gwshan:~/sandbox/l$ make C=2 CF=-D__CHECK_ENDIAN__ \
> arch/powerpc/platforms/powernv/pci-ioda.o
> :
> arch/powerpc/platforms/powernv/pci-ioda.c:451:49: \
> warning: incorrect type in argument 2 (different base types)
> arch/powerpc/platforms/powernv/pci-ioda.c:451:49: \
> expected restricted __be32 const [usertype] *addr
> arch/powerpc/platforms/powernv/pci-ioda.c:451:49: \
> got unsigned int const [usertype] *
> arch/powerpc/platforms/powernv/pci-ioda.c:452:50: \
> warning: incorrect type in argument 1 (different base types)
> arch/powerpc/platforms/powernv/pci-ioda.c:452:50: \
> expected restricted __be32 const [usertype] *cell
> arch/powerpc/platforms/powernv/pci-ioda.c:452:50: \
> got unsigned int const [usertype] *
> arch/powerpc/platforms/powernv/pci-ioda.c:454:35: \
> warning: incorrect type in argument 1 (different base types)
> arch/powerpc/platforms/powernv/pci-ioda.c:454:35: \
> expected restricted __be32 const [usertype] *cell
> arch/powerpc/platforms/powernv/pci-ioda.c:454:35: \
> got unsigned int const [usertype] *[assigned] r
>
> Fixes: 262af557dd75 ("powerpc/powernv: Enable M64 aperatus for PHB3")
> Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
Applied to powerpc next, thanks.
https://git.kernel.org/powerpc/c/0e7736c6b806b24c693367196a076c
cheers
^ permalink raw reply [flat|nested] 17+ messages in thread
end of thread, other threads:[~2016-10-05 2:36 UTC | newest]
Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-08-02 4:10 [PATCH 0/9] powerpc/powernv: Fix sparse warnings for PCI files Gavin Shan
2016-08-02 4:10 ` [PATCH 1/9] powerpc/powernv: Pass CPU-endian PE number to opal_pci_eeh_freeze_clear() Gavin Shan
2016-08-02 4:32 ` Russell Currey
2016-10-05 2:36 ` [1/9] " Michael Ellerman
2016-08-02 4:10 ` [PATCH 2/9] powerpc/powernv: Use CPU-endian hub diag-data type in pnv_eeh_get_and_dump_hub_diag() Gavin Shan
2016-08-02 4:33 ` Russell Currey
2016-10-05 2:36 ` [2/9] " Michael Ellerman
2016-08-02 4:10 ` [PATCH 3/9] powerpc/powernv: Specify proper data type for PCI_SLOT_ID_PREFIX Gavin Shan
2016-10-05 2:36 ` [3/9] " Michael Ellerman
2016-08-02 4:10 ` [PATCH 4/9] powerpc/powernv: Use CPU-endian PEST in pnv_pci_dump_p7ioc_diag_data() Gavin Shan
2016-10-05 2:36 ` [4/9] " Michael Ellerman
2016-08-02 4:10 ` [PATCH 5/9] powerpc/powernv: Fix endian for return value from pnv_tce_get() Gavin Shan
2016-08-02 4:10 ` [PATCH 6/9] powerpc/powernv: Pass CPU-endian argument to xchg() in pnv_tce_xchg() Gavin Shan
2016-08-02 4:10 ` [PATCH 7/9] powerpc/powernv: Fix data type for @r in pnv_ioda_parse_m64_window() Gavin Shan
2016-10-05 2:36 ` [7/9] " Michael Ellerman
2016-08-02 4:10 ` [PATCH 8/9] powerpc/powernv: Fix data type of argument to __raw_{rm_, }writeq() Gavin Shan
2016-08-02 4:10 ` [PATCH 9/9] powerpc/powernv: Fix data type in pnv_pci_ioda2_table_do_free_pages() Gavin Shan
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).