From owner-svn-src-all@FreeBSD.ORG Thu Feb 14 18:41:13 2013 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 2AE83E13; Thu, 14 Feb 2013 18:41:13 +0000 (UTC) (envelope-from neel@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 045FB6AD; Thu, 14 Feb 2013 18:41:13 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r1EIfCAH017907; Thu, 14 Feb 2013 18:41:12 GMT (envelope-from neel@svn.freebsd.org) Received: (from neel@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id r1EIfCXh017906; Thu, 14 Feb 2013 18:41:12 GMT (envelope-from neel@svn.freebsd.org) Message-Id: <201302141841.r1EIfCXh017906@svn.freebsd.org> From: Neel Natu Date: Thu, 14 Feb 2013 18:41:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r246800 - head/usr.sbin/bhyvectl X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 14 Feb 2013 18:41:13 -0000 Author: neel Date: Thu Feb 14 18:41:12 2013 New Revision: 246800 URL: http://svnweb.freebsd.org/changeset/base/246800 Log: Add option "--unassign-pptdev=" to allow 'bhyvectl' to detach passthru devices from the guest. Obtained from: NetApp Modified: head/usr.sbin/bhyvectl/bhyvectl.c Modified: head/usr.sbin/bhyvectl/bhyvectl.c ============================================================================== --- head/usr.sbin/bhyvectl/bhyvectl.c Thu Feb 14 17:34:17 2013 (r246799) +++ head/usr.sbin/bhyvectl/bhyvectl.c Thu Feb 14 18:41:12 2013 (r246800) @@ -185,6 +185,7 @@ usage(void) " [--get-vmcs-interruptibility]\n" " [--set-x2apic-state=]\n" " [--get-x2apic-state]\n" + " [--unassign-pptdev=]\n" " [--set-lowmem=]\n" " [--get-lowmem]\n" " [--set-highmem=]\n" @@ -218,6 +219,7 @@ static int set_cs, set_ds, set_es, set_f static int get_cs, get_ds, get_es, get_fs, get_gs, get_ss, get_tr, get_ldtr; static int set_x2apic_state, get_x2apic_state; enum x2apic_state x2apic_state; +static int unassign_pptdev, bus, slot, func; static int run; /* @@ -376,6 +378,7 @@ enum { SET_VMCS_ENTRY_INTERRUPTION_INFO, SET_CAP, CAPNAME, + UNASSIGN_PPTDEV, }; int @@ -425,6 +428,7 @@ main(int argc, char *argv[]) { "set-vmcs-entry-interruption-info", REQ_ARG, 0, SET_VMCS_ENTRY_INTERRUPTION_INFO }, { "capname", REQ_ARG, 0, CAPNAME }, + { "unassign-pptdev", REQ_ARG, 0, UNASSIGN_PPTDEV }, { "setcap", REQ_ARG, 0, SET_CAP }, { "getcap", NO_ARG, &getcap, 1 }, { "get-stats", NO_ARG, &get_stats, 1 }, @@ -672,6 +676,11 @@ main(int argc, char *argv[]) case CAPNAME: capname = optarg; break; + case UNASSIGN_PPTDEV: + unassign_pptdev = 1; + if (sscanf(optarg, "%d/%d/%d", &bus, &slot, &func) != 3) + usage(); + break; default: usage(); } @@ -805,6 +814,9 @@ main(int argc, char *argv[]) if (!error && set_x2apic_state) error = vm_set_x2apic_state(ctx, vcpu, x2apic_state); + if (!error && unassign_pptdev) + error = vm_unassign_pptdev(ctx, bus, slot, func); + if (!error && set_exception_bitmap) { error = vm_set_vmcs_field(ctx, vcpu, VMCS_EXCEPTION_BITMAP, exception_bitmap);