Hi Darren,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on powerpc/next]
[also build test WARNING on v4.15-rc6 next-20180103]
[if your patch is applied to the wrong git tree, please drop us a note to help 
improve the system]

url:    
https://github.com/0day-ci/linux/commits/Darren-Stevens/powerpc-pasemi-Add-PCI-initialisation-for-Nemo-board/20180103-091349
base:   https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git next
config: powerpc-allmodconfig (attached as .config)
compiler: powerpc64-linux-gnu-gcc (Debian 7.2.0-11) 7.2.0
reproduce:
        wget 
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        make.cross ARCH=powerpc 

All warnings (new ones prefixed by >>):

   In file included from include/linux/printk.h:7:0,
                    from include/linux/kernel.h:14,
                    from arch/powerpc/platforms/pasemi/pci.c:26:
   arch/powerpc/platforms/pasemi/pci.c: In function 'sb600_set_flag':
>> include/linux/kern_levels.h:5:18: warning: format '%lx' expects argument of 
>> type 'long unsigned int', but argument 2 has type 'resource_size_t {aka long 
>> long unsigned int}' [-Wformat=]
    #define KERN_SOH "\001"  /* ASCII Start Of Header */
                     ^
   include/linux/kern_levels.h:10:19: note: in expansion of macro 'KERN_SOH'
    #define KERN_CRIT KERN_SOH "2" /* critical conditions */
                      ^~~~~~~~
>> arch/powerpc/platforms/pasemi/pci.c:137:10: note: in expansion of macro 
>> 'KERN_CRIT'
      printk(KERN_CRIT "NEMO SB600 IOB base %08lx\n",res.start);
             ^~~~~~~~~
   arch/powerpc/platforms/pasemi/pci.c:137:45: note: format string is defined 
here
      printk(KERN_CRIT "NEMO SB600 IOB base %08lx\n",res.start);
                                            ~~~~^
                                            %08llx

vim +/KERN_CRIT +137 arch/powerpc/platforms/pasemi/pci.c

  > 26  #include <linux/kernel.h>
    27  #include <linux/pci.h>
    28  
    29  #include <asm/pci-bridge.h>
    30  #include <asm/isa-bridge.h>
    31  #include <asm/machdep.h>
    32  
    33  #include <asm/ppc-pci.h>
    34  
    35  #include "pasemi.h"
    36  
    37  #define PA_PXP_CFA(bus, devfn, off) (((bus) << 20) | ((devfn) << 12) | 
(off))
    38  
    39  static inline int pa_pxp_offset_valid(u8 bus, u8 devfn, int offset)
    40  {
    41          /* Device 0 Function 0 is special: It's config space spans 
function 1 as
    42           * well, so allow larger offset. It's really a two-function 
device but the
    43           * second function does not probe.
    44           */
    45          if (bus == 0 && devfn == 0)
    46                  return offset < 8192;
    47          else
    48                  return offset < 4096;
    49  }
    50  
    51  static void volatile __iomem *pa_pxp_cfg_addr(struct pci_controller 
*hose,
    52                                         u8 bus, u8 devfn, int offset)
    53  {
    54          return hose->cfg_data + PA_PXP_CFA(bus, devfn, offset);
    55  }
    56  
    57  static inline int is_root_port(int busno, int devfn)
    58  {
    59          return ((busno == 0) && (PCI_FUNC(devfn) < 4) &&
    60                   ((PCI_SLOT(devfn) == 16) || (PCI_SLOT(devfn) == 17)));
    61  }
    62  
    63  static inline int is_5945_reg(int reg)
    64  {
    65          return (((reg >= 0x18) && (reg < 0x34)) ||
    66                  ((reg >= 0x158) && (reg < 0x178)));
    67  }
    68  
    69  static int workaround_5945(struct pci_bus *bus, unsigned int devfn,
    70                             int offset, int len, u32 *val)
    71  {
    72          struct pci_controller *hose;
    73          void volatile __iomem *addr, *dummy;
    74          int byte;
    75          u32 tmp;
    76  
    77          if (!is_root_port(bus->number, devfn) || !is_5945_reg(offset))
    78                  return 0;
    79  
    80          hose = pci_bus_to_host(bus);
    81  
    82          addr = pa_pxp_cfg_addr(hose, bus->number, devfn, offset & ~0x3);
    83          byte = offset & 0x3;
    84  
    85          /* Workaround bug 5945: write 0 to a dummy register before 
reading,
    86           * and write back what we read. We must read/write the full 
32-bit
    87           * contents so we need to shift and mask by hand.
    88           */
    89          dummy = pa_pxp_cfg_addr(hose, bus->number, devfn, 0x10);
    90          out_le32(dummy, 0);
    91          tmp = in_le32(addr);
    92          out_le32(addr, tmp);
    93  
    94          switch (len) {
    95          case 1:
    96                  *val = (tmp >> (8*byte)) & 0xff;
    97                  break;
    98          case 2:
    99                  if (byte == 0)
   100                          *val = tmp & 0xffff;
   101                  else
   102                          *val = (tmp >> 16) & 0xffff;
   103                  break;
   104          default:
   105                  *val = tmp;
   106                  break;
   107          }
   108  
   109          return 1;
   110  }
   111  
   112  #ifdef CONFIG_PPC_PASEMI_NEMO
   113  static int sb600_bus = 5;
   114  static void __iomem *iob_mapbase = NULL;
   115  
   116  static void sb600_set_flag(int bus)
   117  {
   118          struct resource res;
   119          struct device_node *dn;
   120          int err;
   121  
   122          if (iob_mapbase == NULL) {
   123                  dn = of_find_compatible_node(NULL, "isa", 
"pasemi,1682m-iob");
   124                  if (!dn) {
   125                          printk(KERN_CRIT "NEMO SB600 missing iob 
node\n");
   126                          return;
   127                  }
   128  
   129                  err = of_address_to_resource(dn, 0, &res);
   130                  of_node_put(dn);
   131  
   132                  if (err) {
   133                          printk(KERN_CRIT "NEMO SB600 missing 
resource\n");
   134                          return;
   135                  }
   136  
 > 137                  printk(KERN_CRIT "NEMO SB600 IOB base 
 > %08lx\n",res.start);
   138  
   139                  iob_mapbase = ioremap(res.start + 0x100, 0x94);
   140          }
   141  
   142          if (iob_mapbase != NULL) {
   143                  if (bus == sb600_bus) {
   144                          /*
   145                           * This is the SB600's bus, tell the PCI-e root 
port
   146                           * to allow non-zero devices to enumerate.
   147                           */
   148                          out_le32(iob_mapbase + 4, in_le32(iob_mapbase + 
4) | 0x800);
   149                  } else {
   150                          /*
   151                           * Only scan device 0 on other busses
   152                           */
   153                          out_le32(iob_mapbase + 4, in_le32(iob_mapbase + 
4) & ~0x800);
   154                  }
   155          }
   156  }
   157  

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Attachment: .config.gz
Description: application/gzip

Reply via email to