lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Date:   Tue, 26 Oct 2021 10:14:54 +0800
From:   kernel test robot <lkp@...el.com>
To:     Marc Bonnici <marc.bonnici@....com>
Cc:     kbuild-all@...ts.01.org, linux-kernel@...r.kernel.org,
        Sudeep Holla <sudeep.holla@....com>
Subject: [sudeep-holla:ffa_notifications_proto 15/15]
 drivers/firmware/arm_ffa_test/test_driver_ffa.c:110:26: warning: no previous
 prototype for 'get_partition_struct'

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/sudeep.holla/linux.git ffa_notifications_proto
head:   c58dfd7efd456c261212967aebc7938a7d5998be
commit: c58dfd7efd456c261212967aebc7938a7d5998be [15/15] test_ffa_driver: Add Test Driver
config: arm64-randconfig-r023-20211021 (attached as .config)
compiler: aarch64-linux-gcc (GCC) 11.2.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://git.kernel.org/pub/scm/linux/kernel/git/sudeep.holla/linux.git/commit/?id=c58dfd7efd456c261212967aebc7938a7d5998be
        git remote add sudeep-holla https://git.kernel.org/pub/scm/linux/kernel/git/sudeep.holla/linux.git
        git fetch --no-tags sudeep-holla ffa_notifications_proto
        git checkout c58dfd7efd456c261212967aebc7938a7d5998be
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross ARCH=arm64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@...el.com>

All warnings (new ones prefixed by >>):

>> drivers/firmware/arm_ffa_test/test_driver_ffa.c:110:26: warning: no previous prototype for 'get_partition_struct' [-Wmissing-prototypes]
     110 | struct partition_struct *get_partition_struct(ffa_partition_id_t id)
         |                          ^~~~~~~~~~~~~~~~~~~~
>> drivers/firmware/arm_ffa_test/test_driver_ffa.c:120:20: warning: no previous prototype for 'get_ffa_dev' [-Wmissing-prototypes]
     120 | struct ffa_device* get_ffa_dev(ffa_partition_id_t id)
         |                    ^~~~~~~~~~~
>> drivers/firmware/arm_ffa_test/test_driver_ffa.c:126:15: warning: no previous prototype for 'get_partition_lock' [-Wmissing-prototypes]
     126 | struct mutex *get_partition_lock(ffa_partition_id_t id)
         |               ^~~~~~~~~~~~~~~~~~
   drivers/firmware/arm_ffa_test/test_driver_ffa.c:132:5: warning: no previous prototype for 'check_status' [-Wmissing-prototypes]
     132 | int check_status(int status, int test_id) {
         |     ^~~~~~~~~~~~
>> drivers/firmware/arm_ffa_test/test_driver_ffa.c:147:6: warning: no previous prototype for 'schedule_receiver_handler' [-Wmissing-prototypes]
     147 | void schedule_receiver_handler(ffa_partition_id_t partition_id, ffa_vcpu_id_t vcpu,
         |      ^~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/firmware/arm_ffa_test/test_driver_ffa.c:163:6: warning: no previous prototype for 'handle_notification_callbacks' [-Wmissing-prototypes]
     163 | void handle_notification_callbacks(ffa_partition_id_t partition_id,
         |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/firmware/arm_ffa_test/test_driver_ffa.c:172:5: warning: no previous prototype for 'setup_notifications' [-Wmissing-prototypes]
     172 | int setup_notifications(ffa_partition_id_t id, struct partition_struct *partition)
         |     ^~~~~~~~~~~~~~~~~~~
   drivers/firmware/arm_ffa_test/test_driver_ffa.c:208:5: warning: no previous prototype for 'relay_message' [-Wmissing-prototypes]
     208 | int relay_message(u32 message, struct partition_struct *partition, ffa_partition_id_t target)
         |     ^~~~~~~~~~~~~
   drivers/firmware/arm_ffa_test/test_driver_ffa.c:235:5: warning: no previous prototype for 'echo_message' [-Wmissing-prototypes]
     235 | int echo_message(u32 message, struct partition_struct *partition)
         |     ^~~~~~~~~~~~
>> drivers/firmware/arm_ffa_test/test_driver_ffa.c:261:5: warning: no previous prototype for 'p_p_notification' [-Wmissing-prototypes]
     261 | int p_p_notification(struct partition_struct *from, struct partition_struct *to,
         |     ^~~~~~~~~~~~~~~~
>> drivers/firmware/arm_ffa_test/test_driver_ffa.c:294:5: warning: no previous prototype for 'partition_pvm_notification' [-Wmissing-prototypes]
     294 | int partition_pvm_notification(struct partition_struct *partition, bool is_per_vcpu, bool delay)
         |     ^~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/firmware/arm_ffa_test/test_driver_ffa.c:331:5: warning: no previous prototype for 'setup_and_trigger_partition_notifications' [-Wmissing-prototypes]
     331 | int setup_and_trigger_partition_notifications(struct partition_struct *partition, bool is_per_vcpu)
         |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/firmware/arm_ffa_test/test_driver_ffa.c:363:5: warning: no previous prototype for 'sp_svm_notification' [-Wmissing-prototypes]
     363 | int sp_svm_notification(struct partition_struct *src, struct partition_struct *dst,
         |     ^~~~~~~~~~~~~~~~~~~
>> drivers/firmware/arm_ffa_test/test_driver_ffa.c:413:6: warning: no previous prototype for 'test_concurrent_notifications' [-Wmissing-prototypes]
     413 | void test_concurrent_notifications(void *_) {
         |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/firmware/arm_ffa_test/test_driver_ffa.c:432:6: warning: no previous prototype for 'run_test' [-Wmissing-prototypes]
     432 | long run_test(int test_id){
         |      ^~~~~~~~
   drivers/firmware/arm_ffa_test/test_driver_ffa.c: In function 'ffa_test_driver_probe':
>> drivers/firmware/arm_ffa_test/test_driver_ffa.c:608:37: warning: variable 'data' set but not used [-Wunused-but-set-variable]
     608 |         struct ffa_send_direct_data data;
         |                                     ^~~~
   drivers/firmware/arm_ffa_test/test_driver_ffa.c: At top level:
   drivers/firmware/arm_ffa_test/test_driver_ffa.c:709:5: warning: no previous prototype for 'ff_a_test_init' [-Wmissing-prototypes]
     709 | int ff_a_test_init(void)
         |     ^~~~~~~~~~~~~~
   drivers/firmware/arm_ffa_test/test_driver_ffa.c:682:34: warning: 'int_driver_id' defined but not used [-Wunused-const-variable=]
     682 | static const struct of_device_id int_driver_id[] = {
         |                                  ^~~~~~~~~~~~~


vim +/get_partition_struct +110 drivers/firmware/arm_ffa_test/test_driver_ffa.c

   108	
   109	/* Helper function to get partition struct for VM or SP. */
 > 110	struct partition_struct *get_partition_struct(ffa_partition_id_t id)
   111	{
   112		if ((SECURE_WORLD_PARTITION_MASK & id)) {
   113			return &sp_structs[id & 0xF];
   114		}
   115		return &vm_structs[id & 0xF];
   116	}
   117	
   118	
   119	/* Helper function to get ffa device for VM or SP. */
 > 120	struct ffa_device* get_ffa_dev(ffa_partition_id_t id)
   121	{
   122		return get_partition_struct(id)->ffa_dev;
   123	}
   124	
   125	/* Helper function to get callback for VM or SP. */
 > 126	struct mutex *get_partition_lock(ffa_partition_id_t id)
   127	{
   128		struct partition_struct *p = get_partition_struct(id);
   129		return &p->lock;
   130	}
   131	
   132	int check_status(int status, int test_id) {
   133		if (status) {
   134			pr_err("\n\nTEST CASE (%d) FAILED with: %d!!\n\n", test_id, status);
   135			ERROR_OCCURRED = true;
   136		}
   137		else {
   138			pr_info("Test Executed Successfully\n");
   139		}
   140		return status;
   141	}
   142	
   143	
   144	/* Partition Driver Related Function. */
   145	
   146	/* Callback to handle Scheduler Receiver Interrupt. Run the partition and ask it to retrive its notifications. */
 > 147	void schedule_receiver_handler(ffa_partition_id_t partition_id, ffa_vcpu_id_t vcpu,
   148				       bool is_per_vcpu, void *dev_data)
   149	{
   150		int ret;
   151		struct ffa_send_direct_data data = { FF_A_NOTIFICATION_GET };
   152		/* Send a direct request to partition to indicate that partition should retrieve it's notifications. */
   153		/* Use the pointer we provided when registering the callback to run the partition directly. */
   154		ret = ffa_ops->sync_send_receive(dev_data, &data);
   155		while (ret == -EBUSY) {
   156			pr_debug("SRC: Busy - Retrying...\n");
   157			ret = ffa_ops->sync_send_receive(dev_data, &data);
   158		}
   159		return;
   160	}
   161	
   162	/* Callback for handling notification registered to this driver. Just print a message for now. */
 > 163	void handle_notification_callbacks(ffa_partition_id_t partition_id,
   164					   ffa_notification_id_t notification_id, void *dev_data)
   165	{
   166		pr_info("Handling notification %d from partition %x on cpu: %d\n",
   167			notification_id, partition_id, smp_processor_id());
   168		return;
   169	}
   170	
   171	/* Test basic request of requesting notifications and providing dummy callback function. */
 > 172	int setup_notifications(ffa_partition_id_t id, struct partition_struct *partition)
   173	{
   174		int rc;
   175		int global_notification = -1;
   176		int per_vcpu_notification = -1;
   177		bool is_per_vcpu = false;
   178	
   179		if (partition->ffa_dev == NULL) {
   180			return -1;
   181		}
   182	
   183		/* Request a global notification. */
   184		rc = ffa_ops->request_notification(partition->ffa_dev, is_per_vcpu,
   185						   handle_notification_callbacks, NULL);
   186		if (rc < 0) {
   187			pr_err("Failed to request global notification: %d\n", rc);
   188			return rc;
   189		}
   190	
   191		global_notification = rc;
   192		pr_debug("Global Notification %d assigned.\n", global_notification);
   193	
   194		/* Request per vcpu notification.*/
   195		is_per_vcpu = true;
   196		rc = ffa_ops->request_notification(partition->ffa_dev, is_per_vcpu,
   197						   handle_notification_callbacks, NULL);
   198		if (rc < 0) {
   199			pr_err("Failed to request per vcpu notification: %d\n", rc);
   200			return rc;
   201		}
   202		per_vcpu_notification = rc;
   203		pr_debug("Per VCPU Notification %d assigned.\n", per_vcpu_notification);
   204		return !((global_notification >= 0) && (per_vcpu_notification >= 0));
   205	}
   206	
   207	/* Test basic communication. Relay message PVM -> SVM -> SP and back. */
   208	int relay_message(u32 message, struct partition_struct *partition, ffa_partition_id_t target)
   209	{
   210		int rc;
   211		struct ffa_send_direct_data data = { FF_A_RELAY_MESSAGE, message, target};
   212	
   213		if (partition->ffa_dev == NULL) {
   214			return -1;
   215		}
   216	
   217	
   218		rc = ffa_ops->sync_send_receive(partition->ffa_dev, &data);
   219		while (rc == -EBUSY) {
   220			pr_debug("DIR_REQ: Busy - Retrying...\n");
   221			rc = ffa_ops->sync_send_receive(partition->ffa_dev, &data);
   222		}
   223	
   224		pr_debug("Echoed data: 0x%lx 0x%lx 0x%lx\n", data.data0, data.data1, data.data2);
   225		if (data.data0 != message){
   226			pr_err("ERROR: Relay Test Case Failed!: %lx\n", data.data0);
   227			return -1;
   228		}
   229		return 0;
   230	}
   231	
   232	
   233	
   234	/* Test basic communication. Echo message back. */
   235	int echo_message(u32 message, struct partition_struct *partition)
   236	{
   237		int rc;
   238		struct ffa_send_direct_data data = { FF_A_ECHO_MESSAGE, message };
   239	
   240		if (partition->ffa_dev == NULL) {
   241			return -1;
   242		}
   243	
   244		rc = ffa_ops->sync_send_receive(partition->ffa_dev, &data);
   245		while (rc == -EBUSY) {
   246			pr_debug("DIR_REQ: Busy - Retrying...\n");
   247			rc = ffa_ops->sync_send_receive(partition->ffa_dev, &data);
   248		}
   249	
   250		pr_debug("Echoed data: 0x%lx 0x%lx 0x%lx\n", data.data0, data.data1, data.data2);
   251		if (message != data.data0){
   252			pr_err("ERROR: Echo Test Case to %x Failed!: %lx\n",
   253			       partition->ffa_dev->vm_id, data.data0);
   254			return -1;
   255		}
   256		return 0;
   257	}
   258	
   259	
   260	/* Request a partition to setup and send a notification to another partition-> */
 > 261	int p_p_notification(struct partition_struct *from, struct partition_struct *to,
   262			     bool is_per_vcpu, bool delay)
   263	{
   264		int rc;
   265		u32 src_dst_ids;
   266		u32 flags = 0;
   267		struct ffa_send_direct_data data;
   268	
   269		flags |= is_per_vcpu << 0;
   270		flags |= delay << 1;
   271	
   272		if (from->ffa_dev == NULL || to->ffa_dev == NULL) {
   273			return -1;
   274		}
   275	
   276		src_dst_ids = (to->ffa_dev->vm_id & 0xFFFF) | from->ffa_dev->vm_id << 16;
   277		data = (struct ffa_send_direct_data) { FF_A_P_P_NOTIFICATION_TEST, src_dst_ids, flags};
   278	
   279		rc = ffa_ops->sync_send_receive(from->ffa_dev, &data);
   280		while (rc == -EBUSY) {
   281			pr_debug("DIR_REQ: Busy - Retrying...\n");
   282			rc = ffa_ops->sync_send_receive(from->ffa_dev, &data);
   283		}
   284	
   285	
   286		pr_debug("Requesting Partition 0x%x [to Bind to SP] 0x%x\n",
   287			 from->ffa_dev->vm_id, to->ffa_dev->vm_id);
   288	
   289		return data.data0;
   290	}
   291	
   292	
   293	/* Test sending a notification from a partiion to the PVM. */
 > 294	int partition_pvm_notification(struct partition_struct *partition, bool is_per_vcpu, bool delay)
   295	{
   296		int rc, notification_id;
   297		struct ffa_send_direct_data data;
   298		u32 flags = 0;
   299	
   300		if (partition->ffa_dev == NULL) {
   301			return -1;
   302		}
   303		/* Request a notification for the partition to signal. */
   304		rc = ffa_ops->request_notification(partition->ffa_dev, is_per_vcpu,
   305						   handle_notification_callbacks, NULL);
   306		if (rc < 0) {
   307			pr_err("Failed to request is_per_vcpu notification: %d\n", rc);
   308			return rc;
   309		}
   310	
   311		notification_id = rc;
   312		pr_debug("Per vcpu ?:%d Notification %d assigned for %x.\n",
   313			 is_per_vcpu, notification_id, partition->ffa_dev->vm_id);
   314	
   315		flags |= is_per_vcpu << 0;
   316		flags |= delay << 1;
   317	
   318		/* Request partition to send notification back to PVM. */
   319		data = (struct ffa_send_direct_data) { FF_A_NOTIFICATION_SEND, notification_id, flags };
   320	
   321		pr_debug("Requesting partition %x to send notification to PVM\n", partition->ffa_dev->vm_id);
   322		rc = ffa_ops->sync_send_receive(partition->ffa_dev, &data);
   323		while (rc == -EBUSY) {
   324			pr_debug("DIR_REQ: Busy - Retrying...\n");
   325			rc = ffa_ops->sync_send_receive(partition->ffa_dev, &data);
   326		}
   327	
   328		return data.data0;
   329	}
   330	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

Download attachment ".config.gz" of type "application/gzip" (47178 bytes)

Powered by blists - more mailing lists