xenbus_client: Extend interface to support multi-page ring

Originally Xen PV drivers only use single-page ring to pass along
information. This might limit the throughput between frontend and
backend.

The patch extends Xenbus driver to support multi-page ring, which in
general should improve throughput if ring is the bottleneck. Changes to
various frontend / backend to adapt to the new interface are also
included.

Affected Xen drivers:
* blkfront/back
* netfront/back
* pcifront/back
* scsifront/back
* vtpmfront

The interface is documented, as before, in xenbus_client.c.

Signed-off-by: Wei Liu <[email protected]>
Signed-off-by: Paul Durrant <[email protected]>
Signed-off-by: Bob Liu <[email protected]>
Cc: Konrad Wilk <[email protected]>
Cc: Boris Ostrovsky <[email protected]>
Signed-off-by: David Vrabel <[email protected]>
This commit is contained in:
Wei Liu 2015-04-03 14:44:59 +08:00 • committed by David Vrabel
commit ccc9d90a9a
11 changed files with 324 additions and 125 deletions

View file

@ -777,12 +777,13 @@ static int pcifront_publish_info(struct pcifront_device *pdev)
{
int err = 0;
struct xenbus_transaction trans;
grant_ref_t gref;
err = xenbus_grant_ring(pdev->xdev, virt_to_mfn(pdev->sh_info));
err = xenbus_grant_ring(pdev->xdev, pdev->sh_info, 1, &gref);
if (err < 0)
goto out;
pdev->gnt_ref = err;
pdev->gnt_ref = gref;
err = xenbus_alloc_evtchn(pdev->xdev, &pdev->evtchn);
if (err)