From 5507ddff729c7874eea393357a28179b0cd2e8ea Mon Sep 17 00:00:00 2001 From: Andrew Cooper Date: Fri, 15 Feb 2013 15:06:18 +0000 Subject: [PATCH] tools/ocaml: libxc bindings: Fix SBDF encoding Changeset 23861:ec7c81fbe0de alters the SBDF encoding expected by the DOMCTL_{de,}assign_device hypercalls. While it updates libxl, libxc and the python bindings, the ocaml bindings got missed. As a result, any attempt to use PCI Passthrough with Xen-4.2 and later will fail. Signed-off-by: Andrew Cooper Acked-by: Ian Campbell Committed-by: Ian Campbell xen-unstable changeset: 26373:56daf05bcf69 Backport-requested-by: Andrew Cooper Committed-by: Ian Jackson --- tools/ocaml/libs/xc/xenctrl_stubs.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/tools/ocaml/libs/xc/xenctrl_stubs.c b/tools/ocaml/libs/xc/xenctrl_stubs.c index 1c14ed64bf..0e26ae9de7 100644 --- a/tools/ocaml/libs/xc/xenctrl_stubs.c +++ b/tools/ocaml/libs/xc/xenctrl_stubs.c @@ -1085,11 +1085,10 @@ CAMLprim value stub_xc_domain_irq_permission(value xch, value domid, static uint32_t pci_dev_to_bdf(int domain, int bus, int slot, int func) { - uint32_t bdf = 0; - bdf |= (bus & 0xff) << 16; - bdf |= (slot & 0x1f) << 11; - bdf |= (func & 0x7) << 8; - return bdf; + return ((uint32_t)domain & 0xffff) << 16 | + ((uint32_t)bus & 0xff) << 8 | + ((uint32_t)slot & 0x1f) << 3 | + ((uint32_t)func & 0x7); } CAMLprim value stub_xc_domain_test_assign_device(value xch, value domid, value desc)