From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Yu, Zhang" Subject: Re: [PATCH 0/2] Refactor ioreq server for better performance. Date: Thu, 02 Jul 2015 23:07:47 +0800 Message-ID: <559553C3.1090703@linux.intel.com> References: <1435840294-22114-1-git-send-email-yu.c.zhang@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="windows-1252"; Format="flowed" Content-Transfer-Encoding: quoted-printable Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1ZAgBk-0001xZ-8J for xen-devel@lists.xenproject.org; Thu, 02 Jul 2015 15:14:08 +0000 In-Reply-To: <1435840294-22114-1-git-send-email-yu.c.zhang@linux.intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: xen-devel@lists.xenproject.org, keir@xen.org, JBeulich@suse.com, andrew.cooper3@citrix.com, Paul.Durrant@citrix.com Cc: kevin.tian@intel.com, zhiyuan.lv@intel.com List-Id: xen-devel@lists.xenproject.org Oh, I forgot the version number and change history. This patchset should be version 2. The change history should be: 1> Split the original patch into 2; 2> Take Paul Durrant=92s comments: a> Add a name member in the struct rb_rangeset, and use the =91q=92 debug key to dump the ranges in ioreq server; b> Keep original routine names for hvm ioreq server; c>. Commit message changes =96 mention that a future patch to change the maximum ranges inside ioreq server; Sorry, my fault. Could I add this change history in next version, or should I resend the version 2? :) Thanks Yu On 7/2/2015 8:31 PM, Yu Zhang wrote: > XenGT leverages ioreq server to track and forward the accesses to > GPU I/O resources, e.g. the PPGTT(per-process graphic translation > tables). Currently, ioreq server uses rangeset to track the BDF/ > PIO/MMIO ranges to be emulated. To select an ioreq server, the > rangeset is searched to see if the I/O range is recorded. However, > traversing the link list inside rangeset could be time consuming > when number of ranges is too high. On HSW platform, number of PPGTTs > for each vGPU could be several hundred. On BDW, this value could > be several thousand. > > To accommodate more ranges, limitation of the number of ranges in an > ioreq server, MAX_NR_IO_RANGES is changed - future patches will be > provided to tune this with other approaches. And to increase the ioreq > server performance, a new data structure, rb_rangeset, is introduced. > > Yu Zhang (2): > Resize the MAX_NR_IO_RANGES for ioreq server > Add new data structure to track ranges. > > xen/arch/x86/domain.c | 3 + > xen/arch/x86/hvm/hvm.c | 56 ++++++-- > xen/common/Makefile | 1 + > xen/common/rb_rangeset.c | 281 ++++++++++++++++++++++++++++++++= +++++++ > xen/include/asm-x86/hvm/domain.h | 4 +- > xen/include/asm-x86/hvm/hvm.h | 1 + > xen/include/xen/rb_rangeset.h | 49 +++++++ > 7 files changed, 379 insertions(+), 16 deletions(-) > create mode 100644 xen/common/rb_rangeset.c > create mode 100644 xen/include/xen/rb_rangeset.h >