Hi Mathieu,

I love your patch! Yet something to improve:

[auto build test ERROR on tip/perf/core]
[also build test ERROR on v4.18-rc3 next-20180702]
[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/Mathieu-Poirier/perf-Add-ioctl-for-PMU-driver-configuration/20180703-064327
config: s390-defconfig (attached as .config)
compiler: s390x-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
        GCC_VERSION=7.2.0 make.cross ARCH=s390 

All error/warnings (new ones prefixed by >>):

>> arch/s390/kernel/perf_cpum_sf.c:1606:1: error: expected identifier or '(' 
>> before '{' token
    {
    ^
>> arch/s390/kernel/perf_cpum_sf.c:1604:14: warning: 'aux_buffer_setup' used 
>> but never defined
    static void *aux_buffer_setup(struct perf_event *event, void **pages,
                 ^~~~~~~~~~~~~~~~

vim +1606 arch/s390/kernel/perf_cpum_sf.c

ca5955cd Pu Hou          2016-11-11  1589  
ca5955cd Pu Hou          2016-11-11  1590  /*
ca5955cd Pu Hou          2016-11-11  1591   * aux_buffer_setup() - Setup AUX 
buffer for diagnostic mode sampling
ca5955cd Pu Hou          2016-11-11  1592   * @cpu:     On which to allocate, 
-1 means current
ca5955cd Pu Hou          2016-11-11  1593   * @pages:   Array of pointers to 
buffer pages passed from perf core
ca5955cd Pu Hou          2016-11-11  1594   * @nr_pages:        Total pages
ca5955cd Pu Hou          2016-11-11  1595   * @snapshot:        Flag for 
snapshot mode
ca5955cd Pu Hou          2016-11-11  1596   *
ca5955cd Pu Hou          2016-11-11  1597   * This is the callback when setup 
an event using AUX buffer. Perf tool can
ca5955cd Pu Hou          2016-11-11  1598   * trigger this by an additional 
mmap() call on the event. Unlike the buffer
ca5955cd Pu Hou          2016-11-11  1599   * for basic samples, AUX buffer 
belongs to the event. It is scheduled with
ca5955cd Pu Hou          2016-11-11  1600   * the task among online cpus when 
it is a per-thread event.
ca5955cd Pu Hou          2016-11-11  1601   *
ca5955cd Pu Hou          2016-11-11  1602   * Return the private AUX buffer 
structure if success or NULL if fails.
ca5955cd Pu Hou          2016-11-11  1603   */
ceb39bf0 Mathieu Poirier 2018-07-02 @1604  static void *aux_buffer_setup(struct 
perf_event *event, void **pages,
ceb39bf0 Mathieu Poirier 2018-07-02  1605                             int 
nr_pages, bool snapshot);
ca5955cd Pu Hou          2016-11-11 @1606  {
ca5955cd Pu Hou          2016-11-11  1607       struct sf_buffer *sfb;
ca5955cd Pu Hou          2016-11-11  1608       struct aux_buffer *aux;
ca5955cd Pu Hou          2016-11-11  1609       unsigned long *new, *tail;
ca5955cd Pu Hou          2016-11-11  1610       int i, n_sdbt;
ca5955cd Pu Hou          2016-11-11  1611  
ca5955cd Pu Hou          2016-11-11  1612       if (!nr_pages || !pages)
ca5955cd Pu Hou          2016-11-11  1613               return NULL;
ca5955cd Pu Hou          2016-11-11  1614  
ca5955cd Pu Hou          2016-11-11  1615       if (nr_pages > CPUM_SF_MAX_SDB 
* CPUM_SF_SDB_DIAG_FACTOR) {
ca5955cd Pu Hou          2016-11-11  1616               pr_err("AUX buffer size 
(%i pages) is larger than the "
ca5955cd Pu Hou          2016-11-11  1617                      "maximum 
sampling buffer limit\n",
ca5955cd Pu Hou          2016-11-11  1618                      nr_pages);
ca5955cd Pu Hou          2016-11-11  1619               return NULL;
ca5955cd Pu Hou          2016-11-11  1620       } else if (nr_pages < 
CPUM_SF_MIN_SDB * CPUM_SF_SDB_DIAG_FACTOR) {
ca5955cd Pu Hou          2016-11-11  1621               pr_err("AUX buffer size 
(%i pages) is less than the "
ca5955cd Pu Hou          2016-11-11  1622                      "minimum 
sampling buffer limit\n",
ca5955cd Pu Hou          2016-11-11  1623                      nr_pages);
ca5955cd Pu Hou          2016-11-11  1624               return NULL;
ca5955cd Pu Hou          2016-11-11  1625       }
ca5955cd Pu Hou          2016-11-11  1626  
ca5955cd Pu Hou          2016-11-11  1627       /* Allocate aux_buffer struct 
for the event */
ca5955cd Pu Hou          2016-11-11  1628       aux = kmalloc(sizeof(struct 
aux_buffer), GFP_KERNEL);
ca5955cd Pu Hou          2016-11-11  1629       if (!aux)
ca5955cd Pu Hou          2016-11-11  1630               goto no_aux;
ca5955cd Pu Hou          2016-11-11  1631       sfb = &aux->sfb;
ca5955cd Pu Hou          2016-11-11  1632  
ca5955cd Pu Hou          2016-11-11  1633       /* Allocate sdbt_index for fast 
reference */
ca5955cd Pu Hou          2016-11-11  1634       n_sdbt = (nr_pages + 
CPUM_SF_SDB_PER_TABLE - 1) / CPUM_SF_SDB_PER_TABLE;
ca5955cd Pu Hou          2016-11-11  1635       aux->sdbt_index = 
kmalloc_array(n_sdbt, sizeof(void *), GFP_KERNEL);
ca5955cd Pu Hou          2016-11-11  1636       if (!aux->sdbt_index)
ca5955cd Pu Hou          2016-11-11  1637               goto no_sdbt_index;
ca5955cd Pu Hou          2016-11-11  1638  
ca5955cd Pu Hou          2016-11-11  1639       /* Allocate sdb_index for fast 
reference */
ca5955cd Pu Hou          2016-11-11  1640       aux->sdb_index = 
kmalloc_array(nr_pages, sizeof(void *), GFP_KERNEL);
ca5955cd Pu Hou          2016-11-11  1641       if (!aux->sdb_index)
ca5955cd Pu Hou          2016-11-11  1642               goto no_sdb_index;
ca5955cd Pu Hou          2016-11-11  1643  
ca5955cd Pu Hou          2016-11-11  1644       /* Allocate the first SDBT */
ca5955cd Pu Hou          2016-11-11  1645       sfb->num_sdbt = 0;
ca5955cd Pu Hou          2016-11-11  1646       sfb->sdbt = (unsigned long *) 
get_zeroed_page(GFP_KERNEL);
ca5955cd Pu Hou          2016-11-11  1647       if (!sfb->sdbt)
ca5955cd Pu Hou          2016-11-11  1648               goto no_sdbt;
ca5955cd Pu Hou          2016-11-11  1649       
aux->sdbt_index[sfb->num_sdbt++] = (unsigned long)sfb->sdbt;
ca5955cd Pu Hou          2016-11-11  1650       tail = sfb->tail = sfb->sdbt;
ca5955cd Pu Hou          2016-11-11  1651  
ca5955cd Pu Hou          2016-11-11  1652       /*
ca5955cd Pu Hou          2016-11-11  1653        * Link the provided pages of 
AUX buffer to SDBT.
ca5955cd Pu Hou          2016-11-11  1654        * Allocate SDBT if needed.
ca5955cd Pu Hou          2016-11-11  1655        */
ca5955cd Pu Hou          2016-11-11  1656       for (i = 0; i < nr_pages; i++, 
tail++) {
ca5955cd Pu Hou          2016-11-11  1657               if 
(require_table_link(tail)) {
ca5955cd Pu Hou          2016-11-11  1658                       new = (unsigned 
long *) get_zeroed_page(GFP_KERNEL);
ca5955cd Pu Hou          2016-11-11  1659                       if (!new)
ca5955cd Pu Hou          2016-11-11  1660                               goto 
no_sdbt;
ca5955cd Pu Hou          2016-11-11  1661                       
aux->sdbt_index[sfb->num_sdbt++] = (unsigned long)new;
ca5955cd Pu Hou          2016-11-11  1662                       /* Link current 
page to tail of chain */
ca5955cd Pu Hou          2016-11-11  1663                       *tail = 
(unsigned long)(void *) new + 1;
ca5955cd Pu Hou          2016-11-11  1664                       tail = new;
ca5955cd Pu Hou          2016-11-11  1665               }
ca5955cd Pu Hou          2016-11-11  1666               /* Tail is the entry in 
a SDBT */
ca5955cd Pu Hou          2016-11-11  1667               *tail = (unsigned 
long)pages[i];
ca5955cd Pu Hou          2016-11-11  1668               aux->sdb_index[i] = 
(unsigned long)pages[i];
ca5955cd Pu Hou          2016-11-11  1669       }
ca5955cd Pu Hou          2016-11-11  1670       sfb->num_sdb = nr_pages;
ca5955cd Pu Hou          2016-11-11  1671  
ca5955cd Pu Hou          2016-11-11  1672       /* Link the last entry in the 
SDBT to the first SDBT */
ca5955cd Pu Hou          2016-11-11  1673       *tail = (unsigned long) 
sfb->sdbt + 1;
ca5955cd Pu Hou          2016-11-11  1674       sfb->tail = tail;
ca5955cd Pu Hou          2016-11-11  1675  
ca5955cd Pu Hou          2016-11-11  1676       /*
ca5955cd Pu Hou          2016-11-11  1677        * Initial all SDBs are zeroed. 
Mark it as empty.
ca5955cd Pu Hou          2016-11-11  1678        * So there is no need to clear 
the full indicator
ca5955cd Pu Hou          2016-11-11  1679        * when this event is first 
added.
ca5955cd Pu Hou          2016-11-11  1680        */
ca5955cd Pu Hou          2016-11-11  1681       aux->empty_mark = sfb->num_sdb 
- 1;
ca5955cd Pu Hou          2016-11-11  1682  
ca5955cd Pu Hou          2016-11-11  1683       debug_sprintf_event(sfdbg, 4, 
"aux_buffer_setup: setup %lu SDBTs"
ca5955cd Pu Hou          2016-11-11  1684                           " and %lu 
SDBs\n",
ca5955cd Pu Hou          2016-11-11  1685                           
sfb->num_sdbt, sfb->num_sdb);
ca5955cd Pu Hou          2016-11-11  1686  
ca5955cd Pu Hou          2016-11-11  1687       return aux;
ca5955cd Pu Hou          2016-11-11  1688  
ca5955cd Pu Hou          2016-11-11  1689  no_sdbt:
ca5955cd Pu Hou          2016-11-11  1690       /* SDBs (AUX buffer pages) are 
freed by caller */
ca5955cd Pu Hou          2016-11-11  1691       for (i = 0; i < sfb->num_sdbt; 
i++)
ca5955cd Pu Hou          2016-11-11  1692               
free_page(aux->sdbt_index[i]);
ca5955cd Pu Hou          2016-11-11  1693       kfree(aux->sdb_index);
ca5955cd Pu Hou          2016-11-11  1694  no_sdb_index:
ca5955cd Pu Hou          2016-11-11  1695       kfree(aux->sdbt_index);
ca5955cd Pu Hou          2016-11-11  1696  no_sdbt_index:
ca5955cd Pu Hou          2016-11-11  1697       kfree(aux);
ca5955cd Pu Hou          2016-11-11  1698  no_aux:
ca5955cd Pu Hou          2016-11-11  1699       return NULL;
ca5955cd Pu Hou          2016-11-11  1700  }
ca5955cd Pu Hou          2016-11-11  1701  

:::::: The code at line 1606 was first introduced by commit
:::::: ca5955cdeae744edd3dcc65d677e833fc29658c2 s390/cpumf: introduce AUX 
buffer for dump diagnostic sample data

:::::: TO: Pu Hou <bjho...@linux.vnet.ibm.com>
:::::: CC: Martin Schwidefsky <schwidef...@de.ibm.com>

---
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