Hi Oleksandr,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on sound/for-next]
[also build test ERROR on v4.17-rc1 next-20180416]
[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/Oleksandr-Andrushchenko/ALSA-xen-front-Add-Xen-para-virtualized-frontend-driver/20180416-143123
base:   https://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git for-next
config: x86_64-allmodconfig (attached as .config)
compiler: gcc-7 (Debian 7.3.0-1) 7.3.0
reproduce:
        # save the attached .config to linux build tree
        make ARCH=x86_64 

All errors (new ones prefixed by >>):

   In file included from sound/xen/xen_snd_front.c:21:0:
>> sound/xen/xen_snd_front_evtchnl.h:62:34: error: field 'hw_param' has 
>> incomplete type
        struct xensnd_query_hw_param hw_param;
                                     ^~~~~~~~
--
   sound/xen/xen_snd_front_evtchnl.c:51:22: sparse: undefined identifier 
'XENSND_OP_TRIGGER'
   sound/xen/xen_snd_front_evtchnl.c:55:22: sparse: undefined identifier 
'XENSND_OP_HW_PARAM_QUERY'
   sound/xen/xen_snd_front_evtchnl.c:58:45: sparse: no member 'resp' in struct 
xensnd_resp
   sound/xen/xen_snd_front_evtchnl.c:51:22: sparse: incompatible types for 
'case' statement
   sound/xen/xen_snd_front_evtchnl.c:55:22: sparse: incompatible types for 
'case' statement
   sound/xen/xen_snd_front_evtchnl.c:99:20: sparse: using member 'in_prod' in 
incomplete struct xensnd_event_page
   sound/xen/xen_snd_front_evtchnl.c:102:25: sparse: using member 'in_cons' in 
incomplete struct xensnd_event_page
   sound/xen/xen_snd_front_evtchnl.c:105:25: sparse: using member 'in_cons' in 
incomplete struct xensnd_event_page
   sound/xen/xen_snd_front_evtchnl.c:108:26: sparse: undefined identifier 
'XENSND_IN_RING_REF'
   sound/xen/xen_snd_front_evtchnl.c:109:21: sparse: using member 'id' in 
incomplete struct xensnd_evt
   sound/xen/xen_snd_front_evtchnl.c:112:30: sparse: using member 'type' in 
incomplete struct xensnd_evt
   sound/xen/xen_snd_front_evtchnl.c:113:22: sparse: undefined identifier 
'XENSND_EVT_CUR_POS'
   sound/xen/xen_snd_front_evtchnl.c:113:22: sparse: incompatible types for 
'case' statement
   sound/xen/xen_snd_front_evtchnl.c:119:13: sparse: using member 'in_cons' in 
incomplete struct xensnd_event_page
   sound/xen/xen_snd_front_evtchnl.c:213:34: sparse: undefined identifier 
'XENSND_FIELD_EVT_RING_REF'
   sound/xen/xen_snd_front_evtchnl.c:412:47: sparse: undefined identifier 
'XENSND_FIELD_EVT_RING_REF'
   sound/xen/xen_snd_front_evtchnl.c:432:47: sparse: undefined identifier 
'XENSND_FIELD_EVT_RING_REF'
   sound/xen/xen_snd_front_evtchnl.c:51:22: sparse: Expected constant 
expression in case statement
   sound/xen/xen_snd_front_evtchnl.c:55:22: sparse: Expected constant 
expression in case statement
   sound/xen/xen_snd_front_evtchnl.c:113:22: sparse: Expected constant 
expression in case statement
   In file included from sound/xen/xen_snd_front_evtchnl.c:18:0:
>> sound/xen/xen_snd_front_evtchnl.h:62:34: error: field 'hw_param' has 
>> incomplete type
        struct xensnd_query_hw_param hw_param;
                                     ^~~~~~~~
   sound/xen/xen_snd_front_evtchnl.c: In function 'evtchnl_interrupt_req':
>> sound/xen/xen_snd_front_evtchnl.c:51:8: error: 'XENSND_OP_TRIGGER' 
>> undeclared (first use in this function); did you mean 'XENSND_OP_WRITE'?
      case XENSND_OP_TRIGGER:
           ^~~~~~~~~~~~~~~~~
           XENSND_OP_WRITE
   sound/xen/xen_snd_front_evtchnl.c:51:8: note: each undeclared identifier is 
reported only once for each function it appears in
>> sound/xen/xen_snd_front_evtchnl.c:55:8: error: 'XENSND_OP_HW_PARAM_QUERY' 
>> undeclared (first use in this function); did you mean 'XENSND_OP_TRIGGER'?
      case XENSND_OP_HW_PARAM_QUERY:
           ^~~~~~~~~~~~~~~~~~~~~~~~
           XENSND_OP_TRIGGER
>> sound/xen/xen_snd_front_evtchnl.c:58:10: error: 'struct xensnd_resp' has no 
>> member named 'resp'
         resp->resp.hw_param;
             ^~
   sound/xen/xen_snd_front_evtchnl.c: In function 'evtchnl_interrupt_evt':
>> sound/xen/xen_snd_front_evtchnl.c:99:13: error: dereferencing pointer to 
>> incomplete type 'struct xensnd_event_page'
     prod = page->in_prod;
                ^~
>> sound/xen/xen_snd_front_evtchnl.c:108:12: error: implicit declaration of 
>> function 'XENSND_IN_RING_REF'; did you mean 'XENSND_FIELD_RING_REF'? 
>> [-Werror=implicit-function-declaration]
      event = &XENSND_IN_RING_REF(page, cons);
               ^~~~~~~~~~~~~~~~~~
               XENSND_FIELD_RING_REF
>> sound/xen/xen_snd_front_evtchnl.c:108:11: error: lvalue required as unary 
>> '&' operand
      event = &XENSND_IN_RING_REF(page, cons);
              ^
   In file included from include/linux/kernel.h:10:0,
                    from include/linux/interrupt.h:6,
                    from include/xen/events.h:5,
                    from sound/xen/xen_snd_front_evtchnl.c:11:
>> sound/xen/xen_snd_front_evtchnl.c:109:21: error: dereferencing pointer to 
>> incomplete type 'struct xensnd_evt'
      if (unlikely(event->id != channel->evt_id++))
                        ^
   include/linux/compiler.h:77:42: note: in definition of macro 'unlikely'
    # define unlikely(x) __builtin_expect(!!(x), 0)
                                             ^
>> sound/xen/xen_snd_front_evtchnl.c:113:8: error: 'XENSND_EVT_CUR_POS' 
>> undeclared (first use in this function); did you mean 'XENSND_OP_CLOSE'?
      case XENSND_EVT_CUR_POS:
           ^~~~~~~~~~~~~~~~~~
           XENSND_OP_CLOSE
   sound/xen/xen_snd_front_evtchnl.c: In function 'evtchnl_alloc':
>> sound/xen/xen_snd_front_evtchnl.c:213:6: error: 'XENSND_FIELD_EVT_RING_REF' 
>> undeclared (first use in this function); did you mean 
>> 'XENSND_FIELD_RING_REF'?
         XENSND_FIELD_EVT_RING_REF);
         ^~~~~~~~~~~~~~~~~~~~~~~~~
         XENSND_FIELD_RING_REF
   sound/xen/xen_snd_front_evtchnl.c: In function 
'xen_snd_front_evtchnl_publish_all':
   sound/xen/xen_snd_front_evtchnl.c:412:12: error: 'XENSND_FIELD_EVT_RING_REF' 
undeclared (first use in this function); did you mean 'XENSND_FIELD_RING_REF'?
               XENSND_FIELD_EVT_RING_REF,
               ^~~~~~~~~~~~~~~~~~~~~~~~~
               XENSND_FIELD_RING_REF
>> sound/xen/xen_snd_front_evtchnl.c:413:12: error: 'XENSND_FIELD_EVT_EVT_CHNL' 
>> undeclared (first use in this function); did you mean 
>> 'XENSND_FIELD_EVT_CHNL'?
               XENSND_FIELD_EVT_EVT_CHNL);
               ^~~~~~~~~~~~~~~~~~~~~~~~~
               XENSND_FIELD_EVT_CHNL
   cc1: some warnings being treated as errors

sparse warnings: (new ones prefixed by >>)

   sound/xen/xen_snd_front_evtchnl.c:51:22: sparse: undefined identifier 
'XENSND_OP_TRIGGER'
   sound/xen/xen_snd_front_evtchnl.c:55:22: sparse: undefined identifier 
'XENSND_OP_HW_PARAM_QUERY'
   sound/xen/xen_snd_front_evtchnl.c:58:45: sparse: no member 'resp' in struct 
xensnd_resp
>> sound/xen/xen_snd_front_evtchnl.c:51:22: sparse: incompatible types for 
>> 'case' statement
   sound/xen/xen_snd_front_evtchnl.c:55:22: sparse: incompatible types for 
'case' statement
   sound/xen/xen_snd_front_evtchnl.c:99:20: sparse: using member 'in_prod' in 
incomplete struct xensnd_event_page
   sound/xen/xen_snd_front_evtchnl.c:102:25: sparse: using member 'in_cons' in 
incomplete struct xensnd_event_page
   sound/xen/xen_snd_front_evtchnl.c:105:25: sparse: using member 'in_cons' in 
incomplete struct xensnd_event_page
   sound/xen/xen_snd_front_evtchnl.c:108:26: sparse: undefined identifier 
'XENSND_IN_RING_REF'
   sound/xen/xen_snd_front_evtchnl.c:109:21: sparse: using member 'id' in 
incomplete struct xensnd_evt
   sound/xen/xen_snd_front_evtchnl.c:112:30: sparse: using member 'type' in 
incomplete struct xensnd_evt
   sound/xen/xen_snd_front_evtchnl.c:113:22: sparse: undefined identifier 
'XENSND_EVT_CUR_POS'
   sound/xen/xen_snd_front_evtchnl.c:113:22: sparse: incompatible types for 
'case' statement
   sound/xen/xen_snd_front_evtchnl.c:119:13: sparse: using member 'in_cons' in 
incomplete struct xensnd_event_page
   sound/xen/xen_snd_front_evtchnl.c:213:34: sparse: undefined identifier 
'XENSND_FIELD_EVT_RING_REF'
   sound/xen/xen_snd_front_evtchnl.c:412:47: sparse: undefined identifier 
'XENSND_FIELD_EVT_RING_REF'
   sound/xen/xen_snd_front_evtchnl.c:432:47: sparse: undefined identifier 
'XENSND_FIELD_EVT_RING_REF'
   sound/xen/xen_snd_front_evtchnl.c:51:22: sparse: Expected constant 
expression in case statement
   sound/xen/xen_snd_front_evtchnl.c:55:22: sparse: Expected constant 
expression in case statement
   sound/xen/xen_snd_front_evtchnl.c:113:22: sparse: Expected constant 
expression in case statement
   In file included from sound/xen/xen_snd_front_evtchnl.c:18:0:
   sound/xen/xen_snd_front_evtchnl.h:62:34: error: field 'hw_param' has 
incomplete type
        struct xensnd_query_hw_param hw_param;
                                     ^~~~~~~~
   sound/xen/xen_snd_front_evtchnl.c: In function 'evtchnl_interrupt_req':
   sound/xen/xen_snd_front_evtchnl.c:51:8: error: 'XENSND_OP_TRIGGER' 
undeclared (first use in this function); did you mean 'XENSND_OP_WRITE'?
      case XENSND_OP_TRIGGER:
           ^~~~~~~~~~~~~~~~~
           XENSND_OP_WRITE
   sound/xen/xen_snd_front_evtchnl.c:51:8: note: each undeclared identifier is 
reported only once for each function it appears in
   sound/xen/xen_snd_front_evtchnl.c:55:8: error: 'XENSND_OP_HW_PARAM_QUERY' 
undeclared (first use in this function); did you mean 'XENSND_OP_TRIGGER'?
      case XENSND_OP_HW_PARAM_QUERY:
           ^~~~~~~~~~~~~~~~~~~~~~~~
           XENSND_OP_TRIGGER
   sound/xen/xen_snd_front_evtchnl.c:58:10: error: 'struct xensnd_resp' has no 
member named 'resp'
         resp->resp.hw_param;
             ^~
   sound/xen/xen_snd_front_evtchnl.c: In function 'evtchnl_interrupt_evt':
   sound/xen/xen_snd_front_evtchnl.c:99:13: error: dereferencing pointer to 
incomplete type 'struct xensnd_event_page'
     prod = page->in_prod;
                ^~
   sound/xen/xen_snd_front_evtchnl.c:108:12: error: implicit declaration of 
function 'XENSND_IN_RING_REF'; did you mean 'XENSND_FIELD_RING_REF'? 
[-Werror=implicit-function-declaration]
      event = &XENSND_IN_RING_REF(page, cons);
               ^~~~~~~~~~~~~~~~~~
               XENSND_FIELD_RING_REF
   sound/xen/xen_snd_front_evtchnl.c:108:11: error: lvalue required as unary 
'&' operand
      event = &XENSND_IN_RING_REF(page, cons);
              ^
   In file included from include/linux/kernel.h:10:0,
                    from include/linux/interrupt.h:6,
                    from include/xen/events.h:5,
                    from sound/xen/xen_snd_front_evtchnl.c:11:
   sound/xen/xen_snd_front_evtchnl.c:109:21: error: dereferencing pointer to 
incomplete type 'struct xensnd_evt'
      if (unlikely(event->id != channel->evt_id++))
                        ^
   include/linux/compiler.h:77:42: note: in definition of macro 'unlikely'
    # define unlikely(x) __builtin_expect(!!(x), 0)
                                             ^
   sound/xen/xen_snd_front_evtchnl.c:113:8: error: 'XENSND_EVT_CUR_POS' 
undeclared (first use in this function); did you mean 'XENSND_OP_CLOSE'?
      case XENSND_EVT_CUR_POS:
           ^~~~~~~~~~~~~~~~~~
           XENSND_OP_CLOSE
   sound/xen/xen_snd_front_evtchnl.c: In function 'evtchnl_alloc':
   sound/xen/xen_snd_front_evtchnl.c:213:6: error: 'XENSND_FIELD_EVT_RING_REF' 
undeclared (first use in this function); did you mean 'XENSND_FIELD_RING_REF'?
         XENSND_FIELD_EVT_RING_REF);
         ^~~~~~~~~~~~~~~~~~~~~~~~~
         XENSND_FIELD_RING_REF
   sound/xen/xen_snd_front_evtchnl.c: In function 
'xen_snd_front_evtchnl_publish_all':
   sound/xen/xen_snd_front_evtchnl.c:412:12: error: 'XENSND_FIELD_EVT_RING_REF' 
undeclared (first use in this function); did you mean 'XENSND_FIELD_RING_REF'?
               XENSND_FIELD_EVT_RING_REF,
               ^~~~~~~~~~~~~~~~~~~~~~~~~
               XENSND_FIELD_RING_REF
   sound/xen/xen_snd_front_evtchnl.c:413:12: error: 'XENSND_FIELD_EVT_EVT_CHNL' 
undeclared (first use in this function); did you mean 'XENSND_FIELD_EVT_CHNL'?
               XENSND_FIELD_EVT_EVT_CHNL);
               ^~~~~~~~~~~~~~~~~~~~~~~~~
               XENSND_FIELD_EVT_CHNL
   cc1: some warnings being treated as errors

vim +/hw_param +62 sound/xen/xen_snd_front_evtchnl.h

    39  
    40  struct xen_snd_front_evtchnl {
    41          struct xen_snd_front_info *front_info;
    42          int gref;
    43          int port;
    44          int irq;
    45          int index;
    46          /* state of the event channel */
    47          enum xen_snd_front_evtchnl_state state;
    48          enum xen_snd_front_evtchnl_type type;
    49          /* either response id or incoming event id */
    50          u16 evt_id;
    51          /* next request id or next expected event id */
    52          u16 evt_next_id;
    53          union {
    54                  struct {
    55                          struct xen_sndif_front_ring ring;
    56                          struct completion completion;
    57                          /* latest response status */
    58                          int resp_status;
    59                          /* serializer for backend IO: request/response 
*/
    60                          struct mutex req_io_lock;
    61                          union {
  > 62                                  struct xensnd_query_hw_param hw_param;
    63                          } resp;
    64                  } req;
    65                  struct {
    66                          struct xensnd_event_page *page;
    67                          /* this is needed to handle XENSND_EVT_CUR_POS 
event */
    68                          struct snd_pcm_substream *substream;
    69                  } evt;
    70          } u;
    71  };
    72  

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

Attachment: .config.gz
Description: application/gzip

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

Reply via email to