LCOV - code coverage report
Current view: top level - avtg/drivers/usb/host/xhci.ko/linux:drivers:clk2/weaver - xhci-pci.c.aux (source / functions) Hit Total Coverage
Test: coverage.info Lines: 270 274 98.5 %
Date: 2017-01-25 Functions: 30 30 100.0 %

          Line data    Source code
       1             : 
       2             : struct device;
       3             : 
       4             : void *ldv_dev_get_drvdata(const struct device *dev);
       5             : int ldv_dev_set_drvdata(struct device *dev, void *data);
       6             : 
       7             : struct spi_master;
       8             : struct device;
       9             : struct spi_master *ldv_spi_alloc_master(struct device *host, unsigned size);
      10             : 
      11             : #include <linux/ldv/err.h>
      12             : 
      13             : #include <linux/types.h>
      14             : void *ldv_kzalloc(size_t size, gfp_t flags);
      15             : 
      16             : struct clk;
      17             : 
      18             : extern void ldv_clk_disable(struct clk *clk);
      19             : extern int ldv_clk_enable(void);
      20             : 
      21             : #include <linux/ldv/common.h>
      22             : #include <linux/ldv/irq.h>
      23             : #include <verifier/common.h>
      24             : #include <verifier/nondet.h>
      25             : #include <verifier/memory.h>
      26             : #include <verifier/thread.h>
      27             : 
      28             : #include <linux/pci.h>
      29             : #include <linux/pm.h>
      30             : #include <linux/timer.h>
      31             : 
      32             : 
      33             : struct ldv_struct_insmod_6 {
      34             :  int signal_pending;
      35             : };
      36           1 : 
      37             : struct ldv_struct_pci_scenario_1 {
      38             :  struct pci_driver *arg0;
      39             :  int signal_pending;
      40             : };
      41             : 
      42             : struct ldv_struct_timer_scenario_4 {
      43             :  struct timer_list *arg0;
      44             :  int signal_pending;
      45             : };
      46             : 
      47             : /* EMG Function declarations */
      48             : void ldv_dispatch_deregister_9_1(struct pci_driver *);
      49             : extern void ldv_dispatch_instance_deregister_7_1(struct timer_list *);
      50             : void ldv_dispatch_register_10_3(struct pci_driver *);
      51             : int ldv_emg___pci_register_driver(struct pci_driver *, struct module *, char *);
      52             : extern int ldv_emg_del_timer(struct timer_list *);
      53             : extern int ldv_emg_del_timer_sync(struct timer_list *);
      54             : void ldv_emg_pci_unregister_driver(struct pci_driver *);
      55             : void ldv_partially_ordered_scenario_2(void *);
      56             : void ldv_partially_ordered_scenario_callback_2_17(int (*)(struct usb_hcd *, struct usb_device *), struct usb_hcd *, struct usb_device *);
      57             : void ldv_partially_ordered_scenario_callback_2_18(int (*)(struct usb_hcd *, struct usb_device *), struct usb_hcd *, struct usb_device *);
      58             : void ldv_partially_ordered_scenario_callback_2_19(int (*)(struct usb_hcd *, struct usb_device *), struct usb_hcd *, struct usb_device *);
      59             : void ldv_partially_ordered_scenario_callback_2_20(int (*)(struct usb_hcd *, struct usb_device *, struct usb_host_endpoint *), struct usb_hcd *, struct usb_device *, struct usb_host_endpoint *);
      60             : void ldv_partially_ordered_scenario_callback_2_21(void (*)(struct usb_hcd *, struct usb_host_endpoint *), struct usb_hcd *, struct usb_host_endpoint *);
      61             : void ldv_partially_ordered_scenario_callback_2_22(void (*)(struct usb_hcd *, struct usb_device *), struct usb_hcd *, struct usb_device *);
      62             : void ldv_partially_ordered_scenario_callback_2_23(int (*)(struct usb_hcd *), struct usb_hcd *);
      63             : void ldv_partially_ordered_scenario_callback_2_24(int (*)(struct usb_hcd *, u16 , u16 , u16 , char *, u16 ), struct usb_hcd *, short unsigned int, short unsigned int, short unsigned int, char *, short unsigned int);
      64             : void ldv_partially_ordered_scenario_callback_2_27(int (*)(struct usb_hcd *, char *), struct usb_hcd *, char *);
      65             : void ldv_partially_ordered_scenario_callback_2_30(irqreturn_t (*)(struct usb_hcd *), struct usb_hcd *);
      66             : void ldv_partially_ordered_scenario_callback_2_31(int (*)(struct usb_hcd *), struct usb_hcd *);
      67             : void ldv_partially_ordered_scenario_callback_2_32(void (*)(struct usb_hcd *, struct usb_device *), struct usb_hcd *, struct usb_device *);
      68             : void ldv_partially_ordered_scenario_callback_2_33(void (*)(struct usb_hcd *), struct usb_hcd *);
      69             : void ldv_partially_ordered_scenario_callback_2_34(int (*)(struct usb_hcd *, struct usb_device *, struct usb_tt *, gfp_t ), struct usb_hcd *, struct usb_device *, struct usb_tt *, unsigned int);
      70             : void ldv_partially_ordered_scenario_callback_2_37(int (*)(struct usb_hcd *, struct urb *, int), struct usb_hcd *, struct urb *, int);
      71             : void ldv_partially_ordered_scenario_callback_2_4(int (*)(struct usb_hcd *, struct usb_device *, struct usb_host_endpoint *), struct usb_hcd *, struct usb_device *, struct usb_host_endpoint *);
      72             : void ldv_partially_ordered_scenario_callback_2_40(int (*)(struct usb_hcd *, struct urb *, gfp_t ), struct usb_hcd *, struct urb *, unsigned int);
      73             : int ldv_partially_ordered_scenario_probe_2_12(int (*)(struct usb_hcd *), struct usb_hcd *);
      74             : void ldv_partially_ordered_scenario_release_2_2(void (*)(struct usb_hcd *), struct usb_hcd *);
      75             : void ldv_pci_scenario_1(void *);
      76             : int ldv_pci_scenario_probe_1_17(int (*)(struct pci_dev *, struct pci_device_id *), struct pci_dev *, struct pci_device_id *);
      77             : void ldv_pci_scenario_release_1_2(void (*)(struct pci_dev *), struct pci_dev *);
      78             : extern void ldv_pci_scenario_resume_1_5(int (*)(struct pci_dev *), struct pci_dev *);
      79             : extern void ldv_pci_scenario_resume_early_1_6(int (*)(struct pci_dev *), struct pci_dev *);
      80             : void ldv_pci_scenario_shutdown_1_3(void (*)(struct pci_dev *), struct pci_dev *);
      81             : extern int ldv_pci_scenario_suspend_1_8(int (*)(struct pci_dev *, struct pm_message), struct pci_dev *, struct pm_message);
      82             : extern int ldv_pci_scenario_suspend_late_1_7(int (*)(struct pci_dev *, struct pm_message), struct pci_dev *, struct pm_message);
      83             : 
      84             : /* EMG variable declarations */
      85           1 : struct ldv_thread ldv_thread_1;
      86           1 : struct ldv_thread ldv_thread_2;
      87             : 
      88             : /* EMG variable initialization */
      89             : 
      90             : /* EMG function definitions */
      91             : /* AUX_FUNC ldv_dispatch_deregister_9_1 */
      92             : void ldv_dispatch_deregister_9_1(struct pci_driver *arg0) {
      93             :  struct ldv_struct_pci_scenario_1 *cf_arg_1;
      94             :  /* Skip thread join call */
      95           2 :  return;
      96             : }
      97             : 
      98             : /* AUX_FUNC ldv_dispatch_register_10_3 */
      99             : void ldv_dispatch_register_10_3(struct pci_driver *arg0) {
     100             :  struct ldv_struct_pci_scenario_1 *cf_arg_1;
     101           4 :  cf_arg_1 = ldv_xmalloc(sizeof(struct ldv_struct_pci_scenario_1));
     102           2 :  cf_arg_1->arg0 = arg0;
     103           2 :  ldv_pci_scenario_1(cf_arg_1);
     104           1 :  return;
     105             : }
     106             : 
     107             : /* AUX_FUNC ldv_emg___pci_register_driver */
     108             : int ldv_emg___pci_register_driver(struct pci_driver *arg0, struct module *arg1, char *arg2) {
     109             :  /* LDV {"comment": "Control function '__pci_register_driver'", "type": "CONTROL_FUNCTION_BEGIN", "function": "ldv_emg___pci_register_driver"} */
     110             :  /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
     111           1 :  struct pci_driver *ldv_10_pci_driver_pci_driver;
     112           1 :  /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
     113           1 :  /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
     114             : 
     115           4 :  if (ldv_undef_int()) {
     116             :   /* LDV {"action": "ASSIGN", "type": "CONDITION_BEGIN", "comment": "Get 'pci' callbacks to register."} */
     117           1 :   ldv_10_pci_driver_pci_driver = arg0;
     118             :   /* LDV {"action": "ASSIGN", "type": "CONDITION_END"} */
     119             : 
     120             :   /* LDV {"action": "REGISTER", "type": "DISPATCH_BEGIN", "comment": "Register PCI callbacks."} */
     121           2 :   ldv_dispatch_register_10_3(ldv_10_pci_driver_pci_driver);
     122             :   /* LDV {"action": "REGISTER", "type": "DISPATCH_END"} */
     123             : 
     124             :   /* LDV {"action": "FAIL", "type": "CONDITION_BEGIN", "comment": "Fail registration of 'pci' callbacks."} */
     125           3 :   return ldv_undef_int_negative();
     126             :   /* LDV {"action": "FAIL", "type": "CONDITION_END"} */
     127             : 
     128             :   /* Exit function at a terminal state */
     129             :  }
     130             :  else {
     131             :   /* LDV {"action": "SUCCESS", "type": "CONDITION_BEGIN", "comment": "Registration of 'pci' callbacks has been successful."} */
     132           1 :   return 0;
     133             :   /* LDV {"action": "SUCCESS", "type": "CONDITION_END"} */
     134             : 
     135             :   /* Exit function at a terminal state */
     136             :  }
     137             :  /* End of the process */
     138             :  /* LDV {"comment": "End of control function based on process '__pci_register_driver'", "type": "CONTROL_FUNCTION_END", "function": "ldv_emg___pci_register_driver"} */
     139             : }
     140             : 
     141             : /* AUX_FUNC ldv_emg_pci_unregister_driver */
     142             : void ldv_emg_pci_unregister_driver(struct pci_driver *arg0) {
     143             :  /* LDV {"comment": "Control function 'pci_unregister_driver'", "type": "CONTROL_FUNCTION_BEGIN", "function": "ldv_emg_pci_unregister_driver"} */
     144           2 :  /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
     145             :  struct pci_driver *ldv_9_pci_driver_pci_driver;
     146             :  /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
     147             :  /* LDV {"action": "ASSIGN", "type": "CONDITION_BEGIN", "comment": "Get 'pci' callbacks to deregister."} */
     148           2 :  ldv_9_pci_driver_pci_driver = arg0;
     149             :  /* LDV {"action": "ASSIGN", "type": "CONDITION_END"} */
     150             : 
     151             :  /* LDV {"action": "DEREGISTER", "type": "DISPATCH_BEGIN", "comment": "Deregister PCI callbacks."} */
     152           4 :  ldv_dispatch_deregister_9_1(ldv_9_pci_driver_pci_driver);
     153             :  /* LDV {"action": "DEREGISTER", "type": "DISPATCH_END"} */
     154             : 
     155             :  /* Exit function at a terminal state */
     156           2 :  return;
     157             :  /* End of the process */
     158             :  return;
     159             :  /* LDV {"comment": "End of control function based on process 'pci_unregister_driver'", "type": "CONTROL_FUNCTION_END", "function": "ldv_emg_pci_unregister_driver"} */
     160             : }
     161             : 
     162             : /* AUX_FUNC ldv_partially_ordered_scenario_2 */
     163             : void ldv_partially_ordered_scenario_2(void *arg0) {
     164             :  /* LDV {"thread": 2, "type": "CONTROL_FUNCTION_BEGIN", "comment": "Control function 'partially_ordered_scenario(struct_hc_driver)'", "function": "ldv_partially_ordered_scenario_2"} */
     165           1 :  /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
     166           1 :  int (*ldv_2_callback_add_endpoint)(struct usb_hcd *, struct usb_device *, struct usb_host_endpoint *);
     167           1 :  int (*ldv_2_callback_address_device)(struct usb_hcd *, struct usb_device *);
     168           1 :  int (*ldv_2_callback_alloc_dev)(struct usb_hcd *, struct usb_device *);
     169           1 :  int (*ldv_2_callback_check_bandwidth)(struct usb_hcd *, struct usb_device *);
     170           1 :  int (*ldv_2_callback_drop_endpoint)(struct usb_hcd *, struct usb_device *, struct usb_host_endpoint *);
     171           1 :  void (*ldv_2_callback_endpoint_reset)(struct usb_hcd *, struct usb_host_endpoint *);
     172           1 :  void (*ldv_2_callback_free_dev)(struct usb_hcd *, struct usb_device *);
     173           1 :  int (*ldv_2_callback_get_frame_number)(struct usb_hcd *);
     174             :  int (*ldv_2_callback_hub_control)(struct usb_hcd *, u16 , u16 , u16 , char *, u16 );
     175           1 :  int (*ldv_2_callback_hub_status_data)(struct usb_hcd *, char *);
     176           1 :  irqreturn_t (*ldv_2_callback_irq)(struct usb_hcd *);
     177           1 :  int (*ldv_2_callback_reset)(struct usb_hcd *);
     178           1 :  void (*ldv_2_callback_reset_bandwidth)(struct usb_hcd *, struct usb_device *);
     179           1 :  void (*ldv_2_callback_shutdown)(struct usb_hcd *);
     180           1 :  int (*ldv_2_callback_update_hub_device)(struct usb_hcd *, struct usb_device *, struct usb_tt *, gfp_t );
     181             :  int (*ldv_2_callback_urb_dequeue)(struct usb_hcd *, struct urb *, int);
     182           1 :  int (*ldv_2_callback_urb_enqueue)(struct usb_hcd *, struct urb *, gfp_t );
     183           1 :  struct hc_driver *ldv_2_container_struct_hc_driver;
     184           1 :  short unsigned int ldv_2_ldv_param_24_1_default;
     185           1 :  short unsigned int ldv_2_ldv_param_24_2_default;
     186           1 :  short unsigned int ldv_2_ldv_param_24_3_default;
     187           1 :  char *ldv_2_ldv_param_24_4_default;
     188           1 :  short unsigned int ldv_2_ldv_param_24_5_default;
     189           1 :  char *ldv_2_ldv_param_27_1_default;
     190           1 :  unsigned int ldv_2_ldv_param_34_3_default;
     191           1 :  int ldv_2_ldv_param_37_2_default;
     192           1 :  unsigned int ldv_2_ldv_param_40_2_default;
     193           1 :  struct urb *ldv_2_resource_struct_urb_ptr;
     194           1 :  struct usb_device *ldv_2_resource_struct_usb_device_ptr;
     195           1 :  struct usb_hcd *ldv_2_resource_struct_usb_hcd_ptr;
     196           1 :  struct usb_host_endpoint *ldv_2_resource_struct_usb_host_endpoint_ptr;
     197           1 :  struct usb_tt *ldv_2_resource_struct_usb_tt_ptr;
     198           1 :  int ldv_2_ret_default;
     199           1 :  /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
     200           1 :  /* Initialize automaton variables */
     201           2 :  ldv_2_ret_default = 1;
     202           1 :  /* LDV {"action": "DEFAULT_REGISTER_6", "type": "RECEIVE_BEGIN", "comment": "Begin STRUCT_HC_DRIVER callbacks invocations scenario."} */
     203           3 :  ldv_free(arg0);
     204           1 :  /* LDV {"action": "DEFAULT_REGISTER_6", "type": "RECEIVE_END"} */
     205           1 : 
     206           1 :  /* LDV {"action": "DEFAULT_ALLOC_6", "type": "CONDITION_BEGIN", "comment": "Allocate memory after default registration."} */
     207           4 :  ldv_2_container_struct_hc_driver = ldv_xmalloc_unknown_size(0);
     208           1 :  /* LDV {"action": "DEFAULT_ALLOC_6", "type": "CONDITION_END"} */
     209           1 : 
     210           1 :  /* LDV {"action": "INIT", "type": "CONDITION_BEGIN", "comment": "Alloc memory for common callback arguments."} */
     211           3 :  ldv_2_resource_struct_urb_ptr = ldv_xmalloc_unknown_size(0);
     212           3 :  ldv_2_resource_struct_usb_device_ptr = ldv_xmalloc_unknown_size(0);
     213           3 :  ldv_2_resource_struct_usb_hcd_ptr = ldv_xmalloc_unknown_size(0);
     214           3 :  ldv_2_resource_struct_usb_host_endpoint_ptr = ldv_xmalloc_unknown_size(0);
     215           3 :  ldv_2_resource_struct_usb_tt_ptr = ldv_xmalloc_unknown_size(0);
     216             :  /* LDV {"action": "INIT", "type": "CONDITION_END"} */
     217             : 
     218             :  /* LDV {"action": "MAIN", "type": "SUBPROCESS_BEGIN", "comment": "Start with an initialization callback."} */
     219             :  /* LDV {"action": "MAIN", "type": "SUBPROCESS_END"} */
     220             : 
     221             :  /* Jump to a subprocess 'main' initial state */
     222           1 :  goto ldv_main_2;
     223             :  /* End of the process */
     224             :  return;
     225           1 : 
     226             :  /* Sbprocess main */
     227             :  ldv_main_2:
     228             :  /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
     229             : 
     230           4 :  if (ldv_undef_int()) {
     231             :   /* LDV {"action": "PROBE", "type": "CALL_BEGIN", "callback": true, "comment": "Call an initialization callback. Invoke callback start from hc_driver."} */
     232             :   /* LDV {"type": "CALLBACK", "call": "ldv_2_ret_default = ((& xhci_run))(ldv_2_resource_struct_usb_hcd_ptr);", "comment": "probe"} */
     233           2 :   ldv_2_ret_default = ldv_partially_ordered_scenario_probe_2_12(ldv_2_container_struct_hc_driver->start, ldv_2_resource_struct_usb_hcd_ptr);
     234             :   /* Callback post-call */
     235           2 :   ldv_2_ret_default = ldv_filter_err_code(ldv_2_ret_default);
     236             :   /* LDV {"action": "PROBE", "type": "CALL_END"} */
     237             : 
     238           4 :   if (ldv_undef_int()) {
     239             :    /* LDV {"action": "Y_RET", "type": "CONDITION_BEGIN", "comment": "Initialization has been successful."} */
     240           2 :    ldv_assume(ldv_2_ret_default == 0);
     241             :    /* LDV {"action": "Y_RET", "type": "CONDITION_END"} */
     242             : 
     243             :    /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Initializations are done, proceed to the other callbacks."} */
     244             :    /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
     245             : 
     246             :    /* Jump to a subprocess 'call' initial state */
     247           1 :    goto ldv_call_2;
     248             :   }
     249             :   else {
     250             :    /* LDV {"action": "N_RET", "type": "CONDITION_BEGIN", "comment": "Initialization has failed."} */
     251           2 :    ldv_assume(ldv_2_ret_default != 0);
     252             :    /* LDV {"action": "N_RET", "type": "CONDITION_END"} */
     253             : 
     254             :    /* LDV {"action": "MAIN", "type": "SUBPROCESS_BEGIN", "comment": "Start with an initialization callback."} */
     255             :    /* LDV {"action": "MAIN", "type": "SUBPROCESS_END"} */
     256             : 
     257             :    /* Jump to a subprocess 'main' initial state */
     258           1 :    goto ldv_main_2;
     259             :   }
     260             :  }
     261             :  else {
     262             :   /* LDV {"action": "FREE", "type": "CONDITION_BEGIN", "comment": "Free memory for common callback arguments."} */
     263           2 :   ldv_free(ldv_2_resource_struct_urb_ptr);
     264           2 :   ldv_free(ldv_2_resource_struct_usb_device_ptr);
     265           2 :   ldv_free(ldv_2_resource_struct_usb_hcd_ptr);
     266           2 :   ldv_free(ldv_2_resource_struct_usb_host_endpoint_ptr);
     267           2 :   ldv_free(ldv_2_resource_struct_usb_tt_ptr);
     268             :   /* LDV {"action": "FREE", "type": "CONDITION_END"} */
     269             : 
     270             :   /* LDV {"action": "DEFAULT_FREE_6", "type": "CONDITION_BEGIN", "comment": "Free memory before default deregistration."} */
     271           2 :   ldv_free(ldv_2_container_struct_hc_driver);
     272             :   /* LDV {"action": "DEFAULT_FREE_6", "type": "CONDITION_END"} */
     273             : 
     274             :   /* LDV {"action": "DEFAULT_DEREGISTER_6", "type": "RECEIVE_BEGIN", "comment": "Finish STRUCT_HC_DRIVER callbacks invocations scenario."} */
     275             :   /* Skip a non-replicative signal receiving */
     276             :   /* LDV {"action": "DEFAULT_DEREGISTER_6", "type": "RECEIVE_END"} */
     277             : 
     278             :   /* Exit function at a terminal state */
     279           1 :   return;
     280             :  }
     281             :  /* End of the subprocess 'main' */
     282             :  return;
     283           1 : 
     284             :  /* Sbprocess call */
     285             :  ldv_call_2:
     286             :  /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
     287             : 
     288           2 :  switch (ldv_undef_int()) {
     289           3 :   case 1: {
     290             :    /* LDV {"action": "PRE_CALL_40", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
     291             :    /* LDV {"action": "PRE_CALL_40", "type": "CONDITION_END"} */
     292             : 
     293             :    /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback urb_enqueue from hc_driver."} */
     294             :    /* LDV {"type": "CALLBACK", "call": "((& xhci_urb_enqueue))(ldv_2_resource_struct_usb_hcd_ptr, ldv_2_resource_struct_urb_ptr, ldv_2_ldv_param_40_2_default);", "comment": "callback"} */
     295           2 :    ldv_partially_ordered_scenario_callback_2_40(ldv_2_callback_urb_enqueue, ldv_2_resource_struct_usb_hcd_ptr, ldv_2_resource_struct_urb_ptr, ldv_2_ldv_param_40_2_default);
     296             :    /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
     297             : 
     298             :    /* LDV {"action": "POST_CALL_40", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
     299             :    /* LDV {"action": "POST_CALL_40", "type": "CONDITION_END"} */
     300             : 
     301             :    /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Initializations are done, proceed to the other callbacks."} */
     302             :    /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
     303             : 
     304             :    /* Jump to a subprocess 'call' initial state */
     305           1 :    goto ldv_call_2;
     306           1 :    break;
     307             :   }
     308           3 :   case 2: {
     309             :    /* LDV {"action": "PRE_CALL_37", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
     310             :    /* LDV {"action": "PRE_CALL_37", "type": "CONDITION_END"} */
     311             : 
     312             :    /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback urb_dequeue from hc_driver."} */
     313             :    /* LDV {"type": "CALLBACK", "call": "((& xhci_urb_dequeue))(ldv_2_resource_struct_usb_hcd_ptr, ldv_2_resource_struct_urb_ptr, ldv_2_ldv_param_37_2_default);", "comment": "callback"} */
     314           2 :    ldv_partially_ordered_scenario_callback_2_37(ldv_2_callback_urb_dequeue, ldv_2_resource_struct_usb_hcd_ptr, ldv_2_resource_struct_urb_ptr, ldv_2_ldv_param_37_2_default);
     315             :    /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
     316             : 
     317             :    /* LDV {"action": "POST_CALL_37", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
     318             :    /* LDV {"action": "POST_CALL_37", "type": "CONDITION_END"} */
     319             : 
     320             :    /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Initializations are done, proceed to the other callbacks."} */
     321             :    /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
     322             : 
     323             :    /* Jump to a subprocess 'call' initial state */
     324           1 :    goto ldv_call_2;
     325             :    /* Jump to a subprocess 'call' initial state */
     326             :    goto ldv_call_2;
     327           1 :    break;
     328             :   }
     329           3 :   case 3: {
     330             :    /* LDV {"action": "PRE_CALL_34", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
     331             :    /* LDV {"action": "PRE_CALL_34", "type": "CONDITION_END"} */
     332             : 
     333             :    /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback update_hub_device from hc_driver."} */
     334             :    /* LDV {"type": "CALLBACK", "call": "((& xhci_update_hub_device))(ldv_2_resource_struct_usb_hcd_ptr, ldv_2_resource_struct_usb_device_ptr, ldv_2_resource_struct_usb_tt_ptr, ldv_2_ldv_param_34_3_default);", "comment": "callback"} */
     335           2 :    ldv_partially_ordered_scenario_callback_2_34(ldv_2_callback_update_hub_device, ldv_2_resource_struct_usb_hcd_ptr, ldv_2_resource_struct_usb_device_ptr, ldv_2_resource_struct_usb_tt_ptr, ldv_2_ldv_param_34_3_default);
     336             :    /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
     337             : 
     338             :    /* LDV {"action": "POST_CALL_34", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
     339             :    /* LDV {"action": "POST_CALL_34", "type": "CONDITION_END"} */
     340             : 
     341             :    /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Initializations are done, proceed to the other callbacks."} */
     342             :    /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
     343             : 
     344             :    /* Jump to a subprocess 'call' initial state */
     345           1 :    goto ldv_call_2;
     346             :    /* Jump to a subprocess 'call' initial state */
     347             :    goto ldv_call_2;
     348             :    /* Jump to a subprocess 'call' initial state */
     349             :    goto ldv_call_2;
     350           1 :    break;
     351             :   }
     352           3 :   case 4: {
     353             :    /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback shutdown from hc_driver."} */
     354             :    /* LDV {"type": "CALLBACK", "call": "((& xhci_shutdown))(ldv_2_resource_struct_usb_hcd_ptr);", "comment": "callback"} */
     355           2 :    ldv_partially_ordered_scenario_callback_2_33(ldv_2_callback_shutdown, ldv_2_resource_struct_usb_hcd_ptr);
     356             :    /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
     357             : 
     358             :    /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Initializations are done, proceed to the other callbacks."} */
     359             :    /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
     360             : 
     361             :    /* Jump to a subprocess 'call' initial state */
     362           1 :    goto ldv_call_2;
     363             :    /* Jump to a subprocess 'call' initial state */
     364             :    goto ldv_call_2;
     365             :    /* Jump to a subprocess 'call' initial state */
     366             :    goto ldv_call_2;
     367             :    /* Jump to a subprocess 'call' initial state */
     368             :    goto ldv_call_2;
     369           1 :    break;
     370             :   }
     371           3 :   case 5: {
     372             :    /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback reset_bandwidth from hc_driver."} */
     373             :    /* LDV {"type": "CALLBACK", "call": "((& xhci_reset_bandwidth))(ldv_2_resource_struct_usb_hcd_ptr, ldv_2_resource_struct_usb_device_ptr);", "comment": "callback"} */
     374           2 :    ldv_partially_ordered_scenario_callback_2_32(ldv_2_callback_reset_bandwidth, ldv_2_resource_struct_usb_hcd_ptr, ldv_2_resource_struct_usb_device_ptr);
     375             :    /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
     376             : 
     377             :    /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Initializations are done, proceed to the other callbacks."} */
     378             :    /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
     379             : 
     380             :    /* Jump to a subprocess 'call' initial state */
     381           1 :    goto ldv_call_2;
     382             :    /* Jump to a subprocess 'call' initial state */
     383             :    goto ldv_call_2;
     384             :    /* Jump to a subprocess 'call' initial state */
     385             :    goto ldv_call_2;
     386             :    /* Jump to a subprocess 'call' initial state */
     387             :    goto ldv_call_2;
     388             :    /* Jump to a subprocess 'call' initial state */
     389             :    goto ldv_call_2;
     390           1 :    break;
     391             :   }
     392           3 :   case 6: {
     393             :    /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback reset from hc_driver."} */
     394             :    /* LDV {"type": "CALLBACK", "call": "((& xhci_pci_setup))(ldv_2_resource_struct_usb_hcd_ptr);", "comment": "callback"} */
     395           2 :    ldv_partially_ordered_scenario_callback_2_31(ldv_2_callback_reset, ldv_2_resource_struct_usb_hcd_ptr);
     396             :    /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
     397             : 
     398             :    /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Initializations are done, proceed to the other callbacks."} */
     399             :    /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
     400             : 
     401             :    /* Jump to a subprocess 'call' initial state */
     402           1 :    goto ldv_call_2;
     403             :    /* Jump to a subprocess 'call' initial state */
     404             :    goto ldv_call_2;
     405             :    /* Jump to a subprocess 'call' initial state */
     406             :    goto ldv_call_2;
     407             :    /* Jump to a subprocess 'call' initial state */
     408             :    goto ldv_call_2;
     409             :    /* Jump to a subprocess 'call' initial state */
     410             :    goto ldv_call_2;
     411             :    /* Jump to a subprocess 'call' initial state */
     412             :    goto ldv_call_2;
     413           1 :    break;
     414             :   }
     415           3 :   case 7: {
     416             :    /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback irq from hc_driver."} */
     417             :    /* LDV {"type": "CALLBACK", "call": "((& xhci_irq))(ldv_2_resource_struct_usb_hcd_ptr);", "comment": "callback"} */
     418           2 :    ldv_partially_ordered_scenario_callback_2_30(ldv_2_callback_irq, ldv_2_resource_struct_usb_hcd_ptr);
     419             :    /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
     420             : 
     421             :    /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Initializations are done, proceed to the other callbacks."} */
     422             :    /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
     423             : 
     424             :    /* Jump to a subprocess 'call' initial state */
     425           1 :    goto ldv_call_2;
     426             :    /* Jump to a subprocess 'call' initial state */
     427             :    goto ldv_call_2;
     428             :    /* Jump to a subprocess 'call' initial state */
     429             :    goto ldv_call_2;
     430             :    /* Jump to a subprocess 'call' initial state */
     431             :    goto ldv_call_2;
     432             :    /* Jump to a subprocess 'call' initial state */
     433             :    goto ldv_call_2;
     434             :    /* Jump to a subprocess 'call' initial state */
     435             :    goto ldv_call_2;
     436             :    /* Jump to a subprocess 'call' initial state */
     437             :    goto ldv_call_2;
     438           1 :    break;
     439             :   }
     440           3 :   case 8: {
     441             :    /* LDV {"action": "PRE_CALL_27", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
     442           3 :    ldv_2_ldv_param_27_1_default = ldv_xmalloc_unknown_size(0);
     443             :    /* LDV {"action": "PRE_CALL_27", "type": "CONDITION_END"} */
     444             : 
     445             :    /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback hub_status_data from hc_driver."} */
     446             :    /* LDV {"type": "CALLBACK", "call": "((& xhci_hub_status_data))(ldv_2_resource_struct_usb_hcd_ptr, ldv_2_ldv_param_27_1_default);", "comment": "callback"} */
     447           2 :    ldv_partially_ordered_scenario_callback_2_27(ldv_2_callback_hub_status_data, ldv_2_resource_struct_usb_hcd_ptr, ldv_2_ldv_param_27_1_default);
     448             :    /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
     449             : 
     450             :    /* LDV {"action": "POST_CALL_27", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
     451           2 :    ldv_free(ldv_2_ldv_param_27_1_default);
     452             :    /* LDV {"action": "POST_CALL_27", "type": "CONDITION_END"} */
     453             : 
     454             :    /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Initializations are done, proceed to the other callbacks."} */
     455             :    /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
     456             : 
     457             :    /* Jump to a subprocess 'call' initial state */
     458           1 :    goto ldv_call_2;
     459             :    /* Jump to a subprocess 'call' initial state */
     460             :    goto ldv_call_2;
     461             :    /* Jump to a subprocess 'call' initial state */
     462             :    goto ldv_call_2;
     463             :    /* Jump to a subprocess 'call' initial state */
     464             :    goto ldv_call_2;
     465             :    /* Jump to a subprocess 'call' initial state */
     466             :    goto ldv_call_2;
     467             :    /* Jump to a subprocess 'call' initial state */
     468             :    goto ldv_call_2;
     469             :    /* Jump to a subprocess 'call' initial state */
     470             :    goto ldv_call_2;
     471             :    /* Jump to a subprocess 'call' initial state */
     472             :    goto ldv_call_2;
     473           1 :    break;
     474             :   }
     475           3 :   case 9: {
     476             :    /* LDV {"action": "PRE_CALL_24", "type": "CONDITION_BEGIN", "comment": "Allocate memory for adhoc callback parameters."} */
     477           3 :    ldv_2_ldv_param_24_4_default = ldv_xmalloc_unknown_size(0);
     478             :    /* LDV {"action": "PRE_CALL_24", "type": "CONDITION_END"} */
     479             : 
     480             :    /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback hub_control from hc_driver."} */
     481             :    /* LDV {"type": "CALLBACK", "call": "((& xhci_hub_control))(ldv_2_resource_struct_usb_hcd_ptr, ldv_2_ldv_param_24_1_default, ldv_2_ldv_param_24_2_default, ldv_2_ldv_param_24_3_default, ldv_2_ldv_param_24_4_default, ldv_2_ldv_param_24_5_default);", "comment": "callback"} */
     482           2 :    ldv_partially_ordered_scenario_callback_2_24(ldv_2_callback_hub_control, ldv_2_resource_struct_usb_hcd_ptr, ldv_2_ldv_param_24_1_default, ldv_2_ldv_param_24_2_default, ldv_2_ldv_param_24_3_default, ldv_2_ldv_param_24_4_default, ldv_2_ldv_param_24_5_default);
     483             :    /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
     484             : 
     485             :    /* LDV {"action": "POST_CALL_24", "type": "CONDITION_BEGIN", "comment": "Free memory of adhoc callback parameters."} */
     486           2 :    ldv_free(ldv_2_ldv_param_24_4_default);
     487             :    /* LDV {"action": "POST_CALL_24", "type": "CONDITION_END"} */
     488             : 
     489             :    /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Initializations are done, proceed to the other callbacks."} */
     490             :    /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
     491             : 
     492             :    /* Jump to a subprocess 'call' initial state */
     493           1 :    goto ldv_call_2;
     494             :    /* Jump to a subprocess 'call' initial state */
     495             :    goto ldv_call_2;
     496             :    /* Jump to a subprocess 'call' initial state */
     497             :    goto ldv_call_2;
     498             :    /* Jump to a subprocess 'call' initial state */
     499             :    goto ldv_call_2;
     500             :    /* Jump to a subprocess 'call' initial state */
     501             :    goto ldv_call_2;
     502             :    /* Jump to a subprocess 'call' initial state */
     503             :    goto ldv_call_2;
     504             :    /* Jump to a subprocess 'call' initial state */
     505             :    goto ldv_call_2;
     506             :    /* Jump to a subprocess 'call' initial state */
     507             :    goto ldv_call_2;
     508             :    /* Jump to a subprocess 'call' initial state */
     509             :    goto ldv_call_2;
     510           1 :    break;
     511             :   }
     512           3 :   case 10: {
     513             :    /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback get_frame_number from hc_driver."} */
     514             :    /* LDV {"type": "CALLBACK", "call": "((& xhci_get_frame))(ldv_2_resource_struct_usb_hcd_ptr);", "comment": "callback"} */
     515           2 :    ldv_partially_ordered_scenario_callback_2_23(ldv_2_callback_get_frame_number, ldv_2_resource_struct_usb_hcd_ptr);
     516             :    /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
     517             : 
     518             :    /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Initializations are done, proceed to the other callbacks."} */
     519             :    /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
     520             : 
     521             :    /* Jump to a subprocess 'call' initial state */
     522           1 :    goto ldv_call_2;
     523             :    /* Jump to a subprocess 'call' initial state */
     524             :    goto ldv_call_2;
     525             :    /* Jump to a subprocess 'call' initial state */
     526             :    goto ldv_call_2;
     527             :    /* Jump to a subprocess 'call' initial state */
     528             :    goto ldv_call_2;
     529             :    /* Jump to a subprocess 'call' initial state */
     530             :    goto ldv_call_2;
     531             :    /* Jump to a subprocess 'call' initial state */
     532             :    goto ldv_call_2;
     533             :    /* Jump to a subprocess 'call' initial state */
     534             :    goto ldv_call_2;
     535             :    /* Jump to a subprocess 'call' initial state */
     536             :    goto ldv_call_2;
     537             :    /* Jump to a subprocess 'call' initial state */
     538             :    goto ldv_call_2;
     539             :    /* Jump to a subprocess 'call' initial state */
     540             :    goto ldv_call_2;
     541           1 :    break;
     542             :   }
     543           3 :   case 11: {
     544             :    /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback free_dev from hc_driver."} */
     545             :    /* LDV {"type": "CALLBACK", "call": "((& xhci_free_dev))(ldv_2_resource_struct_usb_hcd_ptr, ldv_2_resource_struct_usb_device_ptr);", "comment": "callback"} */
     546           2 :    ldv_partially_ordered_scenario_callback_2_22(ldv_2_callback_free_dev, ldv_2_resource_struct_usb_hcd_ptr, ldv_2_resource_struct_usb_device_ptr);
     547             :    /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
     548             : 
     549             :    /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Initializations are done, proceed to the other callbacks."} */
     550             :    /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
     551             : 
     552             :    /* Jump to a subprocess 'call' initial state */
     553           1 :    goto ldv_call_2;
     554             :    /* Jump to a subprocess 'call' initial state */
     555             :    goto ldv_call_2;
     556             :    /* Jump to a subprocess 'call' initial state */
     557             :    goto ldv_call_2;
     558             :    /* Jump to a subprocess 'call' initial state */
     559             :    goto ldv_call_2;
     560             :    /* Jump to a subprocess 'call' initial state */
     561             :    goto ldv_call_2;
     562             :    /* Jump to a subprocess 'call' initial state */
     563             :    goto ldv_call_2;
     564             :    /* Jump to a subprocess 'call' initial state */
     565             :    goto ldv_call_2;
     566             :    /* Jump to a subprocess 'call' initial state */
     567             :    goto ldv_call_2;
     568             :    /* Jump to a subprocess 'call' initial state */
     569             :    goto ldv_call_2;
     570             :    /* Jump to a subprocess 'call' initial state */
     571             :    goto ldv_call_2;
     572             :    /* Jump to a subprocess 'call' initial state */
     573             :    goto ldv_call_2;
     574           1 :    break;
     575             :   }
     576           3 :   case 12: {
     577             :    /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback endpoint_reset from hc_driver."} */
     578             :    /* LDV {"type": "CALLBACK", "call": "((& xhci_endpoint_reset))(ldv_2_resource_struct_usb_hcd_ptr, ldv_2_resource_struct_usb_host_endpoint_ptr);", "comment": "callback"} */
     579           2 :    ldv_partially_ordered_scenario_callback_2_21(ldv_2_callback_endpoint_reset, ldv_2_resource_struct_usb_hcd_ptr, ldv_2_resource_struct_usb_host_endpoint_ptr);
     580             :    /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
     581             : 
     582             :    /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Initializations are done, proceed to the other callbacks."} */
     583             :    /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
     584             : 
     585             :    /* Jump to a subprocess 'call' initial state */
     586           1 :    goto ldv_call_2;
     587             :    /* Jump to a subprocess 'call' initial state */
     588             :    goto ldv_call_2;
     589             :    /* Jump to a subprocess 'call' initial state */
     590             :    goto ldv_call_2;
     591             :    /* Jump to a subprocess 'call' initial state */
     592             :    goto ldv_call_2;
     593             :    /* Jump to a subprocess 'call' initial state */
     594             :    goto ldv_call_2;
     595             :    /* Jump to a subprocess 'call' initial state */
     596             :    goto ldv_call_2;
     597             :    /* Jump to a subprocess 'call' initial state */
     598             :    goto ldv_call_2;
     599             :    /* Jump to a subprocess 'call' initial state */
     600             :    goto ldv_call_2;
     601             :    /* Jump to a subprocess 'call' initial state */
     602             :    goto ldv_call_2;
     603             :    /* Jump to a subprocess 'call' initial state */
     604             :    goto ldv_call_2;
     605             :    /* Jump to a subprocess 'call' initial state */
     606             :    goto ldv_call_2;
     607             :    /* Jump to a subprocess 'call' initial state */
     608             :    goto ldv_call_2;
     609           1 :    break;
     610             :   }
     611           3 :   case 13: {
     612             :    /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback drop_endpoint from hc_driver."} */
     613             :    /* LDV {"type": "CALLBACK", "call": "((& xhci_drop_endpoint))(ldv_2_resource_struct_usb_hcd_ptr, ldv_2_resource_struct_usb_device_ptr, ldv_2_resource_struct_usb_host_endpoint_ptr);", "comment": "callback"} */
     614           2 :    ldv_partially_ordered_scenario_callback_2_20(ldv_2_callback_drop_endpoint, ldv_2_resource_struct_usb_hcd_ptr, ldv_2_resource_struct_usb_device_ptr, ldv_2_resource_struct_usb_host_endpoint_ptr);
     615             :    /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
     616             : 
     617             :    /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Initializations are done, proceed to the other callbacks."} */
     618             :    /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
     619             : 
     620             :    /* Jump to a subprocess 'call' initial state */
     621           1 :    goto ldv_call_2;
     622             :    /* Jump to a subprocess 'call' initial state */
     623             :    goto ldv_call_2;
     624             :    /* Jump to a subprocess 'call' initial state */
     625             :    goto ldv_call_2;
     626             :    /* Jump to a subprocess 'call' initial state */
     627             :    goto ldv_call_2;
     628             :    /* Jump to a subprocess 'call' initial state */
     629             :    goto ldv_call_2;
     630             :    /* Jump to a subprocess 'call' initial state */
     631             :    goto ldv_call_2;
     632             :    /* Jump to a subprocess 'call' initial state */
     633             :    goto ldv_call_2;
     634             :    /* Jump to a subprocess 'call' initial state */
     635             :    goto ldv_call_2;
     636             :    /* Jump to a subprocess 'call' initial state */
     637             :    goto ldv_call_2;
     638             :    /* Jump to a subprocess 'call' initial state */
     639             :    goto ldv_call_2;
     640             :    /* Jump to a subprocess 'call' initial state */
     641             :    goto ldv_call_2;
     642             :    /* Jump to a subprocess 'call' initial state */
     643             :    goto ldv_call_2;
     644             :    /* Jump to a subprocess 'call' initial state */
     645             :    goto ldv_call_2;
     646           1 :    break;
     647             :   }
     648           3 :   case 14: {
     649             :    /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback check_bandwidth from hc_driver."} */
     650             :    /* LDV {"type": "CALLBACK", "call": "((& xhci_check_bandwidth))(ldv_2_resource_struct_usb_hcd_ptr, ldv_2_resource_struct_usb_device_ptr);", "comment": "callback"} */
     651           2 :    ldv_partially_ordered_scenario_callback_2_19(ldv_2_callback_check_bandwidth, ldv_2_resource_struct_usb_hcd_ptr, ldv_2_resource_struct_usb_device_ptr);
     652             :    /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
     653             : 
     654             :    /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Initializations are done, proceed to the other callbacks."} */
     655             :    /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
     656             : 
     657             :    /* Jump to a subprocess 'call' initial state */
     658           1 :    goto ldv_call_2;
     659             :    /* Jump to a subprocess 'call' initial state */
     660             :    goto ldv_call_2;
     661             :    /* Jump to a subprocess 'call' initial state */
     662             :    goto ldv_call_2;
     663             :    /* Jump to a subprocess 'call' initial state */
     664             :    goto ldv_call_2;
     665             :    /* Jump to a subprocess 'call' initial state */
     666             :    goto ldv_call_2;
     667             :    /* Jump to a subprocess 'call' initial state */
     668             :    goto ldv_call_2;
     669             :    /* Jump to a subprocess 'call' initial state */
     670             :    goto ldv_call_2;
     671             :    /* Jump to a subprocess 'call' initial state */
     672             :    goto ldv_call_2;
     673             :    /* Jump to a subprocess 'call' initial state */
     674             :    goto ldv_call_2;
     675             :    /* Jump to a subprocess 'call' initial state */
     676             :    goto ldv_call_2;
     677             :    /* Jump to a subprocess 'call' initial state */
     678             :    goto ldv_call_2;
     679             :    /* Jump to a subprocess 'call' initial state */
     680             :    goto ldv_call_2;
     681             :    /* Jump to a subprocess 'call' initial state */
     682             :    goto ldv_call_2;
     683             :    /* Jump to a subprocess 'call' initial state */
     684             :    goto ldv_call_2;
     685           1 :    break;
     686             :   }
     687           3 :   case 15: {
     688             :    /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback alloc_dev from hc_driver."} */
     689             :    /* LDV {"type": "CALLBACK", "call": "((& xhci_alloc_dev))(ldv_2_resource_struct_usb_hcd_ptr, ldv_2_resource_struct_usb_device_ptr);", "comment": "callback"} */
     690           2 :    ldv_partially_ordered_scenario_callback_2_18(ldv_2_callback_alloc_dev, ldv_2_resource_struct_usb_hcd_ptr, ldv_2_resource_struct_usb_device_ptr);
     691             :    /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
     692             : 
     693             :    /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Initializations are done, proceed to the other callbacks."} */
     694             :    /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
     695             : 
     696             :    /* Jump to a subprocess 'call' initial state */
     697           1 :    goto ldv_call_2;
     698             :    /* Jump to a subprocess 'call' initial state */
     699             :    goto ldv_call_2;
     700             :    /* Jump to a subprocess 'call' initial state */
     701             :    goto ldv_call_2;
     702             :    /* Jump to a subprocess 'call' initial state */
     703             :    goto ldv_call_2;
     704             :    /* Jump to a subprocess 'call' initial state */
     705             :    goto ldv_call_2;
     706             :    /* Jump to a subprocess 'call' initial state */
     707             :    goto ldv_call_2;
     708             :    /* Jump to a subprocess 'call' initial state */
     709             :    goto ldv_call_2;
     710             :    /* Jump to a subprocess 'call' initial state */
     711             :    goto ldv_call_2;
     712             :    /* Jump to a subprocess 'call' initial state */
     713             :    goto ldv_call_2;
     714             :    /* Jump to a subprocess 'call' initial state */
     715             :    goto ldv_call_2;
     716             :    /* Jump to a subprocess 'call' initial state */
     717             :    goto ldv_call_2;
     718             :    /* Jump to a subprocess 'call' initial state */
     719             :    goto ldv_call_2;
     720             :    /* Jump to a subprocess 'call' initial state */
     721             :    goto ldv_call_2;
     722             :    /* Jump to a subprocess 'call' initial state */
     723             :    goto ldv_call_2;
     724             :    /* Jump to a subprocess 'call' initial state */
     725             :    goto ldv_call_2;
     726           1 :    break;
     727             :   }
     728           3 :   case 16: {
     729             :    /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback address_device from hc_driver."} */
     730             :    /* LDV {"type": "CALLBACK", "call": "((& xhci_address_device))(ldv_2_resource_struct_usb_hcd_ptr, ldv_2_resource_struct_usb_device_ptr);", "comment": "callback"} */
     731           2 :    ldv_partially_ordered_scenario_callback_2_17(ldv_2_callback_address_device, ldv_2_resource_struct_usb_hcd_ptr, ldv_2_resource_struct_usb_device_ptr);
     732             :    /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
     733             : 
     734             :    /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Initializations are done, proceed to the other callbacks."} */
     735             :    /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
     736             : 
     737             :    /* Jump to a subprocess 'call' initial state */
     738           1 :    goto ldv_call_2;
     739             :    /* Jump to a subprocess 'call' initial state */
     740             :    goto ldv_call_2;
     741             :    /* Jump to a subprocess 'call' initial state */
     742             :    goto ldv_call_2;
     743             :    /* Jump to a subprocess 'call' initial state */
     744             :    goto ldv_call_2;
     745             :    /* Jump to a subprocess 'call' initial state */
     746             :    goto ldv_call_2;
     747             :    /* Jump to a subprocess 'call' initial state */
     748             :    goto ldv_call_2;
     749             :    /* Jump to a subprocess 'call' initial state */
     750             :    goto ldv_call_2;
     751             :    /* Jump to a subprocess 'call' initial state */
     752             :    goto ldv_call_2;
     753             :    /* Jump to a subprocess 'call' initial state */
     754             :    goto ldv_call_2;
     755             :    /* Jump to a subprocess 'call' initial state */
     756             :    goto ldv_call_2;
     757             :    /* Jump to a subprocess 'call' initial state */
     758             :    goto ldv_call_2;
     759             :    /* Jump to a subprocess 'call' initial state */
     760             :    goto ldv_call_2;
     761             :    /* Jump to a subprocess 'call' initial state */
     762             :    goto ldv_call_2;
     763             :    /* Jump to a subprocess 'call' initial state */
     764             :    goto ldv_call_2;
     765             :    /* Jump to a subprocess 'call' initial state */
     766             :    goto ldv_call_2;
     767             :    /* Jump to a subprocess 'call' initial state */
     768             :    goto ldv_call_2;
     769           1 :    break;
     770             :   }
     771           3 :   case 17: {
     772             :    /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "callback": true, "comment": "Call any random callback. Invoke callback add_endpoint from hc_driver."} */
     773             :    /* LDV {"type": "CALLBACK", "call": "((& xhci_add_endpoint))(ldv_2_resource_struct_usb_hcd_ptr, ldv_2_resource_struct_usb_device_ptr, ldv_2_resource_struct_usb_host_endpoint_ptr);", "comment": "callback"} */
     774           2 :    ldv_partially_ordered_scenario_callback_2_4(ldv_2_callback_add_endpoint, ldv_2_resource_struct_usb_hcd_ptr, ldv_2_resource_struct_usb_device_ptr, ldv_2_resource_struct_usb_host_endpoint_ptr);
     775             :    /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
     776             : 
     777             :    /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Initializations are done, proceed to the other callbacks."} */
     778             :    /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
     779             : 
     780             :    /* Jump to a subprocess 'call' initial state */
     781           1 :    goto ldv_call_2;
     782             :    /* Jump to a subprocess 'call' initial state */
     783             :    goto ldv_call_2;
     784             :    /* Jump to a subprocess 'call' initial state */
     785             :    goto ldv_call_2;
     786             :    /* Jump to a subprocess 'call' initial state */
     787             :    goto ldv_call_2;
     788             :    /* Jump to a subprocess 'call' initial state */
     789             :    goto ldv_call_2;
     790             :    /* Jump to a subprocess 'call' initial state */
     791             :    goto ldv_call_2;
     792             :    /* Jump to a subprocess 'call' initial state */
     793             :    goto ldv_call_2;
     794             :    /* Jump to a subprocess 'call' initial state */
     795             :    goto ldv_call_2;
     796             :    /* Jump to a subprocess 'call' initial state */
     797             :    goto ldv_call_2;
     798             :    /* Jump to a subprocess 'call' initial state */
     799             :    goto ldv_call_2;
     800             :    /* Jump to a subprocess 'call' initial state */
     801             :    goto ldv_call_2;
     802             :    /* Jump to a subprocess 'call' initial state */
     803             :    goto ldv_call_2;
     804             :    /* Jump to a subprocess 'call' initial state */
     805             :    goto ldv_call_2;
     806             :    /* Jump to a subprocess 'call' initial state */
     807             :    goto ldv_call_2;
     808             :    /* Jump to a subprocess 'call' initial state */
     809             :    goto ldv_call_2;
     810             :    /* Jump to a subprocess 'call' initial state */
     811             :    goto ldv_call_2;
     812             :    /* Jump to a subprocess 'call' initial state */
     813             :    goto ldv_call_2;
     814           1 :    break;
     815             :   }
     816           3 :   case 18: {
     817             :    /* LDV {"action": "RELEASE", "type": "CALL_BEGIN", "callback": true, "comment": "Do uninitializations before deregistration. Invoke callback stop from hc_driver."} */
     818             :    /* LDV {"type": "CALLBACK", "call": "((& xhci_stop))(ldv_2_resource_struct_usb_hcd_ptr);", "comment": "release"} */
     819           2 :    ldv_partially_ordered_scenario_release_2_2(ldv_2_container_struct_hc_driver->stop, ldv_2_resource_struct_usb_hcd_ptr);
     820             :    /* LDV {"action": "RELEASE", "type": "CALL_END"} */
     821             : 
     822             :    /* LDV {"action": "MAIN", "type": "SUBPROCESS_BEGIN", "comment": "Start with an initialization callback."} */
     823             :    /* LDV {"action": "MAIN", "type": "SUBPROCESS_END"} */
     824             : 
     825             :    /* Jump to a subprocess 'main' initial state */
     826           1 :    goto ldv_main_2;
     827           1 :    break;
     828             :   }
     829           2 :   default: ldv_stop();
     830           1 :  }
     831           0 :  /* End of the subprocess 'call' */
     832           0 :  return;
     833             :  /* LDV {"comment": "End of control function based on process 'partially_ordered_scenario(struct_hc_driver)'", "type": "CONTROL_FUNCTION_END", "function": "ldv_partially_ordered_scenario_2"} */
     834             : }
     835             : 
     836             : /* AUX_FUNC_CALLBACK ldv_partially_ordered_scenario_callback_2_17 */
     837             : void ldv_partially_ordered_scenario_callback_2_17(int (*arg0)(struct usb_hcd *, struct usb_device *), struct usb_hcd *arg1, struct usb_device *arg2) {
     838           9 :  ((& xhci_address_device))(arg1, arg2);
     839           1 : }
     840             : 
     841             : /* AUX_FUNC_CALLBACK ldv_partially_ordered_scenario_callback_2_18 */
     842             : void ldv_partially_ordered_scenario_callback_2_18(int (*arg0)(struct usb_hcd *, struct usb_device *), struct usb_hcd *arg1, struct usb_device *arg2) {
     843           6 :  ((& xhci_alloc_dev))(arg1, arg2);
     844           1 : }
     845             : 
     846             : /* AUX_FUNC_CALLBACK ldv_partially_ordered_scenario_callback_2_19 */
     847             : void ldv_partially_ordered_scenario_callback_2_19(int (*arg0)(struct usb_hcd *, struct usb_device *), struct usb_hcd *arg1, struct usb_device *arg2) {
     848           5 :  ((& xhci_check_bandwidth))(arg1, arg2);
     849           1 : }
     850             : 
     851             : /* AUX_FUNC_CALLBACK ldv_partially_ordered_scenario_callback_2_20 */
     852             : void ldv_partially_ordered_scenario_callback_2_20(int (*arg0)(struct usb_hcd *, struct usb_device *, struct usb_host_endpoint *), struct usb_hcd *arg1, struct usb_device *arg2, struct usb_host_endpoint *arg3) {
     853           6 :  ((& xhci_drop_endpoint))(arg1, arg2, arg3);
     854           1 : }
     855             : 
     856             : /* AUX_FUNC_CALLBACK ldv_partially_ordered_scenario_callback_2_21 */
     857             : void ldv_partially_ordered_scenario_callback_2_21(void (*arg0)(struct usb_hcd *, struct usb_host_endpoint *), struct usb_hcd *arg1, struct usb_host_endpoint *arg2) {
     858           6 :  ((& xhci_endpoint_reset))(arg1, arg2);
     859           1 : }
     860             : 
     861             : /* AUX_FUNC_CALLBACK ldv_partially_ordered_scenario_callback_2_22 */
     862             : void ldv_partially_ordered_scenario_callback_2_22(void (*arg0)(struct usb_hcd *, struct usb_device *), struct usb_hcd *arg1, struct usb_device *arg2) {
     863           5 :  ((& xhci_free_dev))(arg1, arg2);
     864           1 : }
     865             : 
     866             : /* AUX_FUNC_CALLBACK ldv_partially_ordered_scenario_callback_2_23 */
     867             : void ldv_partially_ordered_scenario_callback_2_23(int (*arg0)(struct usb_hcd *), struct usb_hcd *arg1) {
     868           2 :  ((& xhci_get_frame))(arg1);
     869           1 : }
     870             : 
     871             : /* AUX_FUNC_CALLBACK ldv_partially_ordered_scenario_callback_2_24 */
     872             : void ldv_partially_ordered_scenario_callback_2_24(int (*arg0)(struct usb_hcd *, u16 , u16 , u16 , char *, u16 ), struct usb_hcd *arg1, short unsigned int arg2, short unsigned int arg3, short unsigned int arg4, char *arg5, short unsigned int arg6) {
     873           2 :  ((& xhci_hub_control))(arg1, arg2, arg3, arg4, arg5, arg6);
     874           1 : }
     875             : 
     876             : /* AUX_FUNC_CALLBACK ldv_partially_ordered_scenario_callback_2_27 */
     877             : void ldv_partially_ordered_scenario_callback_2_27(int (*arg0)(struct usb_hcd *, char *), struct usb_hcd *arg1, char *arg2) {
     878           2 :  ((& xhci_hub_status_data))(arg1, arg2);
     879           1 : }
     880             : 
     881             : /* AUX_FUNC_CALLBACK ldv_partially_ordered_scenario_callback_2_30 */
     882             : void ldv_partially_ordered_scenario_callback_2_30(irqreturn_t (*arg0)(struct usb_hcd *), struct usb_hcd *arg1) {
     883           4 :  ((& xhci_irq))(arg1);
     884           1 : }
     885             : 
     886             : /* AUX_FUNC_CALLBACK ldv_partially_ordered_scenario_callback_2_31 */
     887             : void ldv_partially_ordered_scenario_callback_2_31(int (*arg0)(struct usb_hcd *), struct usb_hcd *arg1) {
     888           5 :  ((& xhci_pci_setup))(arg1);
     889           1 : }
     890             : 
     891             : /* AUX_FUNC_CALLBACK ldv_partially_ordered_scenario_callback_2_32 */
     892             : void ldv_partially_ordered_scenario_callback_2_32(void (*arg0)(struct usb_hcd *, struct usb_device *), struct usb_hcd *arg1, struct usb_device *arg2) {
     893           4 :  ((& xhci_reset_bandwidth))(arg1, arg2);
     894           1 : }
     895             : 
     896             : /* AUX_FUNC_CALLBACK ldv_partially_ordered_scenario_callback_2_33 */
     897             : void ldv_partially_ordered_scenario_callback_2_33(void (*arg0)(struct usb_hcd *), struct usb_hcd *arg1) {
     898           2 :  ((& xhci_shutdown))(arg1);
     899           1 : }
     900             : 
     901             : /* AUX_FUNC_CALLBACK ldv_partially_ordered_scenario_callback_2_34 */
     902             : void ldv_partially_ordered_scenario_callback_2_34(int (*arg0)(struct usb_hcd *, struct usb_device *, struct usb_tt *, gfp_t ), struct usb_hcd *arg1, struct usb_device *arg2, struct usb_tt *arg3, unsigned int arg4) {
     903           5 :  ((& xhci_update_hub_device))(arg1, arg2, arg3, arg4);
     904           1 : }
     905             : 
     906             : /* AUX_FUNC_CALLBACK ldv_partially_ordered_scenario_callback_2_37 */
     907             : void ldv_partially_ordered_scenario_callback_2_37(int (*arg0)(struct usb_hcd *, struct urb *, int), struct usb_hcd *arg1, struct urb *arg2, int arg3) {
     908           3 :  ((& xhci_urb_dequeue))(arg1, arg2, arg3);
     909           1 : }
     910             : 
     911             : /* AUX_FUNC_CALLBACK ldv_partially_ordered_scenario_callback_2_4 */
     912             : void ldv_partially_ordered_scenario_callback_2_4(int (*arg0)(struct usb_hcd *, struct usb_device *, struct usb_host_endpoint *), struct usb_hcd *arg1, struct usb_device *arg2, struct usb_host_endpoint *arg3) {
     913           8 :  ((& xhci_add_endpoint))(arg1, arg2, arg3);
     914           1 : }
     915             : 
     916             : /* AUX_FUNC_CALLBACK ldv_partially_ordered_scenario_callback_2_40 */
     917             : void ldv_partially_ordered_scenario_callback_2_40(int (*arg0)(struct usb_hcd *, struct urb *, gfp_t ), struct usb_hcd *arg1, struct urb *arg2, unsigned int arg3) {
     918          12 :  ((& xhci_urb_enqueue))(arg1, arg2, arg3);
     919           1 : }
     920             : 
     921             : /* AUX_FUNC_CALLBACK ldv_partially_ordered_scenario_probe_2_12 */
     922             : int ldv_partially_ordered_scenario_probe_2_12(int (*arg0)(struct usb_hcd *), struct usb_hcd *arg1) {
     923           4 :  return ((& xhci_run))(arg1);
     924           1 : }
     925             : 
     926             : /* AUX_FUNC_CALLBACK ldv_partially_ordered_scenario_release_2_2 */
     927             : void ldv_partially_ordered_scenario_release_2_2(void (*arg0)(struct usb_hcd *), struct usb_hcd *arg1) {
     928           2 :  ((& xhci_stop))(arg1);
     929           1 : }
     930             : 
     931             : /* AUX_FUNC ldv_pci_scenario_1 */
     932             : void ldv_pci_scenario_1(void *arg0) {
     933             :  /* LDV {"thread": 1, "type": "CONTROL_FUNCTION_BEGIN", "comment": "Control function 'pci_scenario(pci)'", "function": "ldv_pci_scenario_1"} */
     934           1 :  /* LDV {"type": "CONTROL_FUNCTION_INIT_BEGIN", "comment": "Declare auxiliary variables."} */
     935           1 :  struct pci_driver *ldv_1_container_pci_driver;
     936           1 :  struct pci_dev *ldv_1_resource_dev;
     937           1 :  struct pm_message ldv_1_resource_pm_message;
     938           1 :  struct pci_device_id *ldv_1_resource_struct_pci_device_id_ptr;
     939           1 :  int ldv_1_ret_default;
     940           1 :  /* Received labels */
     941           2 :  struct ldv_struct_pci_scenario_1 *data = (struct ldv_struct_pci_scenario_1*) arg0;
     942           1 : 
     943           1 :  /* LDV {"type": "CONTROL_FUNCTION_INIT_END", "comment": "Declare auxiliary variables."} */
     944           1 :  /* Initialize automaton variables */
     945           1 :  ldv_1_ret_default = 1;
     946             :  /* LDV {"action": "REGISTER", "type": "RECEIVE_BEGIN", "comment": "Begin PCI callbacks invocating."} */
     947             :  /* Assign recieved labels */
     948           2 :  if (data) {
     949           1 :   ldv_1_container_pci_driver = data->arg0;
     950           2 :   ldv_free(data);
     951             :  }
     952             :  /* LDV {"action": "REGISTER", "type": "RECEIVE_END"} */
     953             : 
     954             :  /* LDV {"action": "INIT", "type": "CONDITION_BEGIN", "comment": "Allocate memory for pci_dev structure."} */
     955           5 :  ldv_1_resource_dev = ldv_xmalloc(sizeof(struct pci_dev));
     956           3 :  ldv_1_resource_struct_pci_device_id_ptr = ldv_xmalloc_unknown_size(0);
     957             :  /* LDV {"action": "INIT", "type": "CONDITION_END"} */
     958             : 
     959             :  /* LDV {"action": "MAIN", "type": "SUBPROCESS_BEGIN", "comment": "New device is inserted, probe it."} */
     960             :  /* LDV {"action": "MAIN", "type": "SUBPROCESS_END"} */
     961             : 
     962             :  /* Jump to a subprocess 'main' initial state */
     963           1 :  goto ldv_main_1;
     964             :  /* End of the process */
     965             :  return;
     966           1 : 
     967             :  /* Sbprocess main */
     968             :  ldv_main_1:
     969             :  /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
     970             : 
     971           4 :  if (ldv_undef_int()) {
     972             :   /* LDV {"action": "PROBE", "type": "CALL_BEGIN", "callback": true, "comment": "Probe new PCI driver. Invoke callback probe from pci_driver."} */
     973             :   /* Callback pre-call */
     974           1 :   ldv_pre_probe();
     975             :   /* LDV {"type": "CALLBACK", "call": "ldv_1_ret_default = ((& usb_hcd_pci_probe))(ldv_1_resource_dev, ldv_1_resource_struct_pci_device_id_ptr);", "comment": "probe"} */
     976           3 :   ldv_1_ret_default = ldv_pci_scenario_probe_1_17(ldv_1_container_pci_driver->probe, ldv_1_resource_dev, ldv_1_resource_struct_pci_device_id_ptr);
     977             :   /* Callback post-call */
     978           2 :   ldv_1_ret_default = ldv_post_probe(ldv_1_ret_default);
     979             :   /* LDV {"action": "PROBE", "type": "CALL_END"} */
     980             : 
     981           4 :   if (ldv_undef_int()) {
     982             :    /* LDV {"action": "PROBE_SUCCESS", "type": "CONDITION_BEGIN", "comment": "Probing of PCI driver has been successfull."} */
     983           2 :    ldv_assume(ldv_1_ret_default == 0);
     984             :    /* LDV {"action": "PROBE_SUCCESS", "type": "CONDITION_END"} */
     985             : 
     986             :    /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Driver is probed, call rest callbacks."} */
     987             :    /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
     988             : 
     989             :    /* Jump to a subprocess 'call' initial state */
     990           1 :    goto ldv_call_1;
     991             :   }
     992             :   else {
     993             :    /* LDV {"action": "PROBE_FAILED", "type": "CONDITION_BEGIN", "comment": "Failed to probe PCI driver."} */
     994           2 :    ldv_assume(ldv_1_ret_default != 0);
     995             :    /* LDV {"action": "PROBE_FAILED", "type": "CONDITION_END"} */
     996             : 
     997             :    /* LDV {"action": "MAIN", "type": "SUBPROCESS_BEGIN", "comment": "New device is inserted, probe it."} */
     998             :    /* LDV {"action": "MAIN", "type": "SUBPROCESS_END"} */
     999             : 
    1000             :    /* Jump to a subprocess 'main' initial state */
    1001           1 :    goto ldv_main_1;
    1002             :   }
    1003             :  }
    1004             :  else {
    1005             :   /* LDV {"action": "FREE", "type": "CONDITION_BEGIN", "comment": "Free memory of pci_dev structure."} */
    1006           2 :   ldv_free(ldv_1_resource_dev);
    1007           2 :   ldv_free(ldv_1_resource_struct_pci_device_id_ptr);
    1008             :   /* LDV {"action": "FREE", "type": "CONDITION_END"} */
    1009             : 
    1010             :   /* LDV {"action": "DEREGISTER", "type": "RECEIVE_BEGIN", "comment": "Stop PCI callbacks invocating."} */
    1011             :   /* Skip a non-replicative signal receiving */
    1012             :   /* LDV {"action": "DEREGISTER", "type": "RECEIVE_END"} */
    1013             : 
    1014             :   /* Exit function at a terminal state */
    1015           1 :   return;
    1016             :  }
    1017             :  /* End of the subprocess 'main' */
    1018             :  return;
    1019           1 : 
    1020             :  /* Sbprocess call */
    1021             :  ldv_call_1:
    1022             :  /* LDV {"action": null, "type": "ARTIFICIAL", "comment": "Artificial state in scenario"} */
    1023             : 
    1024           2 :  switch (ldv_undef_int()) {
    1025           3 :   case 1: {
    1026             :    /* LDV {"action": "CALLBACK", "type": "CALL_BEGIN", "comment": "Call callback 'callback' of a process 'pci_scenario' of an interface category 'pci'"} */
    1027             :    /* Skip callback without implementations */
    1028             :    /* LDV {"action": "CALLBACK", "type": "CALL_END"} */
    1029             : 
    1030             :    /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Driver is probed, call rest callbacks."} */
    1031             :    /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
    1032             : 
    1033             :    /* Jump to a subprocess 'call' initial state */
    1034           1 :    goto ldv_call_1;
    1035           1 :    break;
    1036             :   }
    1037           3 :   case 2: {
    1038             :    /* LDV {"action": "SUSPEND", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback suspend from PCI."} */
    1039           3 :    if (ldv_1_container_pci_driver->suspend) {
    1040             :    /* LDV {"type": "CALLBACK", "call": "ldv_1_ret_default = (ldv_1_container_pci_driver->suspend)(ldv_1_resource_dev, ldv_1_resource_pm_message);", "comment": "suspend"} */
    1041           2 :     ldv_1_ret_default = ldv_pci_scenario_suspend_1_8(ldv_1_container_pci_driver->suspend, ldv_1_resource_dev, ldv_1_resource_pm_message);
    1042             :    }
    1043             :    /* Callback post-call */
    1044           4 :    ldv_1_ret_default = ldv_filter_err_code(ldv_1_ret_default);
    1045             :    /* LDV {"action": "SUSPEND", "type": "CALL_END"} */
    1046             : 
    1047             :    /* LDV {"action": "SUSPEND_LATE", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback suspend_late from PCI."} */
    1048           3 :    if (ldv_1_container_pci_driver->suspend_late) {
    1049             :    /* LDV {"type": "CALLBACK", "call": "ldv_1_ret_default = (ldv_1_container_pci_driver->suspend_late)(ldv_1_resource_dev, ldv_1_resource_pm_message);", "comment": "suspend_late"} */
    1050           2 :     ldv_1_ret_default = ldv_pci_scenario_suspend_late_1_7(ldv_1_container_pci_driver->suspend_late, ldv_1_resource_dev, ldv_1_resource_pm_message);
    1051             :    }
    1052             :    /* Callback post-call */
    1053           4 :    ldv_1_ret_default = ldv_filter_err_code(ldv_1_ret_default);
    1054             :    /* LDV {"action": "SUSPEND_LATE", "type": "CALL_END"} */
    1055             : 
    1056             :    /* LDV {"action": "RESUME_EARLY", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback resume_early from PCI."} */
    1057           3 :    if (ldv_1_container_pci_driver->resume_early) {
    1058             :    /* LDV {"type": "CALLBACK", "call": "(ldv_1_container_pci_driver->resume_early)(ldv_1_resource_dev);", "comment": "resume_early"} */
    1059           2 :     ldv_pci_scenario_resume_early_1_6(ldv_1_container_pci_driver->resume_early, ldv_1_resource_dev);
    1060             :    }
    1061             :    /* LDV {"action": "RESUME_EARLY", "type": "CALL_END"} */
    1062             : 
    1063             :    /* LDV {"action": "RESUME", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback resume from PCI."} */
    1064           6 :    if (ldv_1_container_pci_driver->resume) {
    1065             :    /* LDV {"type": "CALLBACK", "call": "(ldv_1_container_pci_driver->resume)(ldv_1_resource_dev);", "comment": "resume"} */
    1066           4 :     ldv_pci_scenario_resume_1_5(ldv_1_container_pci_driver->resume, ldv_1_resource_dev);
    1067             :    }
    1068             :    /* LDV {"action": "RESUME", "type": "CALL_END"} */
    1069             : 
    1070             :    /* LDV {"action": "CALL", "type": "SUBPROCESS_BEGIN", "comment": "Driver is probed, call rest callbacks."} */
    1071             :    /* LDV {"action": "CALL", "type": "SUBPROCESS_END"} */
    1072             : 
    1073             :    /* Jump to a subprocess 'call' initial state */
    1074           3 :    goto ldv_call_1;
    1075           1 :    break;
    1076             :   }
    1077           3 :   case 3: {
    1078             :    /* LDV {"action": "SHUTDOWN", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback shutdown from pci_driver."} */
    1079             :    /* LDV {"type": "CALLBACK", "call": "((& usb_hcd_pci_shutdown))(ldv_1_resource_dev);", "comment": "shutdown"} */
    1080           2 :    ldv_pci_scenario_shutdown_1_3(ldv_1_container_pci_driver->shutdown, ldv_1_resource_dev);
    1081             :    /* LDV {"action": "SHUTDOWN", "type": "CALL_END"} */
    1082             : 
    1083             :    /* LDV {"action": "RELEASE", "type": "CALL_BEGIN", "callback": true, "comment": "Invoke callback remove from pci_driver."} */
    1084             :    /* LDV {"type": "CALLBACK", "call": "((& usb_hcd_pci_remove))(ldv_1_resource_dev);", "comment": "release"} */
    1085           2 :    ldv_pci_scenario_release_1_2(ldv_1_container_pci_driver->remove, ldv_1_resource_dev);
    1086             :    /* LDV {"action": "RELEASE", "type": "CALL_END"} */
    1087             : 
    1088             :    /* LDV {"action": "MAIN", "type": "SUBPROCESS_BEGIN", "comment": "New device is inserted, probe it."} */
    1089             :    /* LDV {"action": "MAIN", "type": "SUBPROCESS_END"} */
    1090             : 
    1091             :    /* Jump to a subprocess 'main' initial state */
    1092           1 :    goto ldv_main_1;
    1093           1 :    break;
    1094             :   }
    1095           2 :   default: ldv_stop();
    1096           1 :  }
    1097           0 :  /* End of the subprocess 'call' */
    1098           0 :  return;
    1099             :  /* LDV {"comment": "End of control function based on process 'pci_scenario(pci)'", "type": "CONTROL_FUNCTION_END", "function": "ldv_pci_scenario_1"} */
    1100             : }
    1101             : 
    1102             : /* AUX_FUNC_CALLBACK ldv_pci_scenario_probe_1_17 */
    1103             : int ldv_pci_scenario_probe_1_17(int (*arg0)(struct pci_dev *, struct pci_device_id *), struct pci_dev *arg1, struct pci_device_id *arg2) {
    1104           2 :  return ((& usb_hcd_pci_probe))(arg1, arg2);
    1105             : }
    1106           1 : 
    1107             : /* AUX_FUNC_CALLBACK ldv_pci_scenario_release_1_2 */
    1108             : void ldv_pci_scenario_release_1_2(void (*arg0)(struct pci_dev *), struct pci_dev *arg1) {
    1109           1 :  ((& usb_hcd_pci_remove))(arg1);
    1110           1 : }
    1111             : 
    1112             : /* AUX_FUNC_CALLBACK ldv_pci_scenario_shutdown_1_3 */
    1113             : void ldv_pci_scenario_shutdown_1_3(void (*arg0)(struct pci_dev *), struct pci_dev *arg1) {
    1114           1 :  ((& usb_hcd_pci_shutdown))(arg1);
    1115           1 : }
    1116             : 
    1117             : 
    1118             : /* AUX_FUNC  ERR_PTR */
    1119             : static inline void *ERR_PTR (long int error)
    1120             : {
    1121             : 
    1122             :  return ldv_err_ptr(error);
    1123             : }
    1124             : 
    1125             : /* AUX_FUNC  PTR_ERR */
    1126             : static inline long int PTR_ERR (void const *ptr)
    1127             : {
    1128             : 
    1129             :  return ldv_ptr_err(ptr);
    1130             : }
    1131             : 
    1132             : /* AUX_FUNC  IS_ERR */
    1133             : static inline long int IS_ERR (void const *ptr)
    1134             : {
    1135             : 
    1136             :  return ldv_is_err(ptr);
    1137             : }
    1138             : 
    1139             : /* AUX_FUNC  IS_ERR_OR_NULL */
    1140             : static inline long int IS_ERR_OR_NULL (void const *ptr)
    1141             : {
    1142             : 
    1143             :  return ldv_is_err_or_null(ptr);
    1144             : }
    1145             : 
    1146             : /* AUX_FUNC  ldv_del_timer_sync_5 */
    1147             : int ldv_del_timer_sync_5 (struct timer_list *ldv_func_arg1)
    1148             : {
    1149             : 
    1150             :  /* LDV {"type": "KERNEL_MODEL", "comment": "Perform the model code of the function 'del_timer_sync'"} */
    1151             :  return ldv_emg_del_timer_sync(ldv_func_arg1);
    1152             : }
    1153             : 
    1154             : /* AUX_FUNC  ldv_del_timer_6 */
    1155             : int ldv_del_timer_6 (struct timer_list *ldv_func_arg1)
    1156             : {
    1157             : 
    1158             :  /* LDV {"type": "KERNEL_MODEL", "comment": "Perform the model code of the function 'del_timer'"} */
    1159             :  return ldv_emg_del_timer(ldv_func_arg1);
    1160             : }
    1161             : 
    1162             : /* AUX_FUNC  kzalloc */
    1163             : static inline void *kzalloc (size_t size, gfp_t flags)
    1164             : {
    1165             : 
    1166             :  return ldv_kzalloc(size, flags);
    1167             : }
    1168             : 
    1169             : /* AUX_FUNC  ldv_dev_get_drvdata_8 */
    1170             : void *ldv_dev_get_drvdata_8 (struct device const *dev)
    1171             : {
    1172             : 
    1173             :  return ldv_dev_get_drvdata(dev);
    1174             : }
    1175             : 
    1176             : /* AUX_FUNC  ldv_dev_get_drvdata_9 */
    1177             : void *ldv_dev_get_drvdata_9 (struct device const *dev)
    1178             : {
    1179             : 
    1180             :  return ldv_dev_get_drvdata(dev);
    1181             : }
    1182             : 
    1183             : /* AUX_FUNC  ldv___pci_register_driver_10 */
    1184             : int ldv___pci_register_driver_10 (struct pci_driver *ldv_func_arg1, struct module *ldv_func_arg2, char const *ldv_func_arg3)
    1185             : {
    1186             : 
    1187           1 :  /* LDV {"type": "KERNEL_MODEL", "comment": "Perform the model code of the function '__pci_register_driver'"} */
    1188           4 :  return ldv_emg___pci_register_driver(ldv_func_arg1, ldv_func_arg2, ldv_func_arg3);
    1189             : }
    1190             : 
    1191             : /* AUX_FUNC  ldv_pci_unregister_driver_11 */
    1192             : void ldv_pci_unregister_driver_11 (struct pci_driver *ldv_func_arg1)
    1193             : {
    1194             : 
    1195             :  /* LDV {"type": "KERNEL_MODEL", "comment": "Perform the model code of the function 'pci_unregister_driver'"} */
    1196           4 :  ldv_emg_pci_unregister_driver(ldv_func_arg1);
    1197           2 : }

Generated by: LCOV version 1.10