Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

xen/xenbus: eliminate xenbus_grant_ring()

There is no external user of xenbus_grant_ring() left, so merge it into
the only caller xenbus_setup_ring().

Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com>
Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Signed-off-by: Juergen Gross <jgross@suse.com>

+19 -48
+19 -46
drivers/xen/xenbus/xenbus_client.c
··· 363 363 __xenbus_switch_state(dev, XenbusStateClosing, 1); 364 364 } 365 365 366 - /** 367 - * xenbus_grant_ring 368 - * @dev: xenbus device 369 - * @vaddr: starting virtual address of the ring 370 - * @nr_pages: number of pages to be granted 371 - * @grefs: grant reference array to be filled in 372 - * 373 - * Grant access to the given @vaddr to the peer of the given device. 374 - * Then fill in @grefs with grant references. Return 0 on success, or 375 - * -errno on error. On error, the device will switch to 376 - * XenbusStateClosing, and the error will be saved in the store. 377 - */ 378 - int xenbus_grant_ring(struct xenbus_device *dev, void *vaddr, 379 - unsigned int nr_pages, grant_ref_t *grefs) 380 - { 381 - int err; 382 - unsigned int i; 383 - grant_ref_t gref_head; 384 - 385 - err = gnttab_alloc_grant_references(nr_pages, &gref_head); 386 - if (err) { 387 - xenbus_dev_fatal(dev, err, "granting access to ring page"); 388 - return err; 389 - } 390 - 391 - for (i = 0; i < nr_pages; i++) { 392 - unsigned long gfn; 393 - 394 - if (is_vmalloc_addr(vaddr)) 395 - gfn = pfn_to_gfn(vmalloc_to_pfn(vaddr)); 396 - else 397 - gfn = virt_to_gfn(vaddr); 398 - 399 - grefs[i] = gnttab_claim_grant_reference(&gref_head); 400 - gnttab_grant_foreign_access_ref(grefs[i], dev->otherend_id, 401 - gfn, 0); 402 - 403 - vaddr = vaddr + XEN_PAGE_SIZE; 404 - } 405 - 406 - return 0; 407 - } 408 - EXPORT_SYMBOL_GPL(xenbus_grant_ring); 409 - 410 366 /* 411 367 * xenbus_setup_ring 412 368 * @dev: xenbus device ··· 380 424 unsigned int nr_pages, grant_ref_t *grefs) 381 425 { 382 426 unsigned long ring_size = nr_pages * XEN_PAGE_SIZE; 427 + grant_ref_t gref_head; 383 428 unsigned int i; 384 429 int ret; 385 430 ··· 390 433 goto err; 391 434 } 392 435 393 - ret = xenbus_grant_ring(dev, *vaddr, nr_pages, grefs); 394 - if (ret) 436 + ret = gnttab_alloc_grant_references(nr_pages, &gref_head); 437 + if (ret) { 438 + xenbus_dev_fatal(dev, ret, "granting access to %u ring pages", 439 + nr_pages); 395 440 goto err; 441 + } 442 + 443 + for (i = 0; i < nr_pages; i++) { 444 + unsigned long gfn; 445 + 446 + if (is_vmalloc_addr(*vaddr)) 447 + gfn = pfn_to_gfn(vmalloc_to_pfn(vaddr[i])); 448 + else 449 + gfn = virt_to_gfn(vaddr[i]); 450 + 451 + grefs[i] = gnttab_claim_grant_reference(&gref_head); 452 + gnttab_grant_foreign_access_ref(grefs[i], dev->otherend_id, 453 + gfn, 0); 454 + } 396 455 397 456 return 0; 398 457
-2
include/xen/xenbus.h
··· 224 224 const char *pathfmt, ...); 225 225 226 226 int xenbus_switch_state(struct xenbus_device *dev, enum xenbus_state new_state); 227 - int xenbus_grant_ring(struct xenbus_device *dev, void *vaddr, 228 - unsigned int nr_pages, grant_ref_t *grefs); 229 227 int xenbus_setup_ring(struct xenbus_device *dev, gfp_t gfp, void **vaddr, 230 228 unsigned int nr_pages, grant_ref_t *grefs); 231 229 void xenbus_teardown_ring(void **vaddr, unsigned int nr_pages,