From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-yw0-f170.google.com (mail-yw0-f170.google.com [209.85.161.170]) by dpdk.org (Postfix) with ESMTP id CD86C1B53 for ; Wed, 9 Aug 2017 11:43:52 +0200 (CEST) Received: by mail-yw0-f170.google.com with SMTP id u207so36672298ywc.3 for ; Wed, 09 Aug 2017 02:43:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=IyQsyeKY/UVBk1rtlf69WBR9sO05QqCwWNr8w6vWupE=; b=fwm1Cszf3Y/XLx/pIlaxXJOs3GE/mDF19jVHJEUqV3tDoArSaEl4MzEKf0WLbx8qY3 aShV549tn9C9sFEm+YsD9t7QDFCk/Re9dkX2RAIiRAb2g41abnS8cDIvQqFPUgYSljhr Y51t4JZI9sWpjbBZzGlQNBfrSYY2yaAd2SF04= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=IyQsyeKY/UVBk1rtlf69WBR9sO05QqCwWNr8w6vWupE=; b=T6AQI0kYV9CtVUKRyLp9d1SGn81berEeXr/vFKEZhOpR5qelpKwhN4RR1CbIp0CQsp SE9F2xB9oO96stTGMgpAEcmB0jotUoIL/TA73NzV2mL2wnmCsTr/xEiIR6dTluyRPXeY LPSieM48Cc5+iYsDo+qI47iyqqFo+tlOAyCVAPTSu+TfwjFGOiSlky47Rw13tlD0L1DV wUpaQ9T2RPaNGUEOiPZ7vBEZKVT7aVW+3VZ6aQhwYbMYB0DIH1YRS9JUJ167DYNomq7+ JIyR8YQ/CLhF3hTtCCDSg6uKwATe5HC1ICBrMvww0k2T62QHZeRHjwBdv0Hah3kclmS2 e33g== X-Gm-Message-State: AHYfb5ivvtWfnjtx9Wgn9dDORmEdiWPSFymeTRyC6qT2Rn2HT3ikoO4q 53duF+DdewSFpbBDVp6PVHJQ6RB1m0nuZSw= X-Received: by 10.37.174.151 with SMTP id b23mr5737891ybj.193.1502271831995; Wed, 09 Aug 2017 02:43:51 -0700 (PDT) MIME-Version: 1.0 Received: by 10.37.0.8 with HTTP; Wed, 9 Aug 2017 02:43:51 -0700 (PDT) In-Reply-To: <86228AFD5BCD8E4EBFD2B90117B5E81E62E4E23C@SHSMSX103.ccr.corp.intel.com> References: <1502260322-23906-1-git-send-email-jianbo.liu@linaro.org> <86228AFD5BCD8E4EBFD2B90117B5E81E62E4E23C@SHSMSX103.ccr.corp.intel.com> From: Jianbo Liu Date: Wed, 9 Aug 2017 17:43:51 +0800 Message-ID: To: "Liu, Yong" Cc: "dts@dpdk.org" , "herbert.guan@arm.com" Content-Type: text/plain; charset="UTF-8" Subject: Re: [dts] [PATCH] framework: add config option for vfio noiommu mode X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: test suite reviews and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 Aug 2017 09:43:53 -0000 Hi Marvin, It's for some arm64 platforms which do not support IOMMU. And it's also can be a temp solution for the device inside VM without vIOMMU. Thanks! Jianbo On 9 August 2017 at 17:07, Liu, Yong wrote: > Hi Jianbo, > I am curious about your environment, what kind of environment you're using and required for NOIMMU mode? > > Thanks, > Marvin > >> -----Original Message----- >> From: dts [mailto:dts-bounces@dpdk.org] On Behalf Of Jianbo Liu >> Sent: Wednesday, August 09, 2017 2:32 PM >> To: dts@dpdk.org; herbert.guan@arm.com >> Cc: Jianbo Liu >> Subject: [dts] [PATCH] framework: add config option for vfio noiommu mode >> >> Signed-off-by: Jianbo Liu >> --- >> framework/dts.py | 9 +++++++++ >> framework/project_dpdk.py | 30 +++++++++++++++++++++++++++++- >> framework/settings.py | 1 + >> tools/setup.py | 2 +- >> 4 files changed, 40 insertions(+), 2 deletions(-) >> >> diff --git a/framework/dts.py b/framework/dts.py >> index c821fc1..931bf38 100644 >> --- a/framework/dts.py >> +++ b/framework/dts.py >> @@ -81,6 +81,14 @@ def dts_parse_param(config, section): >> parameters = config.get(section, 'parameters').split(':') >> drivername = config.get(section, 'drivername').split('=')[-1] >> >> + driver = drivername.split(':') >> + if len(driver) == 2: >> + drivername = driver[0] >> + drivermode = driver[1] >> + settings.save_global_setting(settings.HOST_DRIVER_MODE_SETTING, >> drivermode) >> + else: >> + drivername = driver[0] >> + >> settings.save_global_setting(settings.HOST_DRIVER_SETTING, drivername) >> >> paramDict = dict() >> @@ -373,6 +381,7 @@ def dts_run_target(duts, tester, targets, test_suites): >> for dutobj in duts: >> dutobj.stop_ports() >> dutobj.restore_interfaces() >> + dutobj.restore_modules() >> >> >> def dts_run_suite(duts, tester, test_suites, target): >> diff --git a/framework/project_dpdk.py b/framework/project_dpdk.py >> index b9a6d4a..402ac8d 100644 >> --- a/framework/project_dpdk.py >> +++ b/framework/project_dpdk.py >> @@ -33,7 +33,7 @@ import os >> import re >> >> from settings import NICS, load_global_setting, accepted_nic >> -from settings import DPDK_RXMODE_SETTING, HOST_DRIVER_SETTING >> +from settings import DPDK_RXMODE_SETTING, HOST_DRIVER_SETTING, >> HOST_DRIVER_MODE_SETTING >> from ssh_connection import SSHConnection >> from crb import Crb >> from dut import Dut >> @@ -104,6 +104,11 @@ class DPDKdut(Dut): >> self.send_expect("modprobe vfio-pci", "#", 70) >> out = self.send_expect("lsmod | grep vfio_iommu_type1", "#") >> assert ("vfio_iommu_type1" in out), "Failed to setup vfio- >> pci" >> + >> + drivermode = load_global_setting(HOST_DRIVER_MODE_SETTING) >> + if drivermode == "noiommu": >> + self.send_expect("echo 1 > >> /sys/module/vfio/parameters/enable_unsafe_noiommu_mode", "#", 70) >> + >> else: >> self.send_expect("modprobe uio", "#", 70) >> out = self.send_expect("lsmod | grep igb_uio", "#") >> @@ -130,6 +135,29 @@ class DPDKdut(Dut): >> out = self.send_expect("kldstat", "#") >> assert ("nic_uio" in out), "Failed to insmod nic_uio" >> >> + def restore_modules(self): >> + """ >> + Restore DPDK kernel module on DUT. >> + """ >> + restore_modules = getattr(self, 'restore_modules_%s' % >> self.get_os_type()) >> + restore_modules() >> + >> + def restore_modules_linux(self): >> + """ >> + Restore DPDK Linux kernel module on DUT. >> + """ >> + drivername = load_global_setting(HOST_DRIVER_SETTING) >> + if drivername == "vfio-pci": >> + drivermode = load_global_setting(HOST_DRIVER_MODE_SETTING) >> + if drivermode == "noiommu": >> + self.send_expect("echo 0 > >> /sys/module/vfio/parameters/enable_unsafe_noiommu_mode", "#", 70) >> + >> + def restore_modules_freebsd(self): >> + """ >> + Restore DPDK Freebsd kernel module on DUT. >> + """ >> + pass >> + >> def set_rxtx_mode(self): >> """ >> Set default RX/TX PMD function, >> diff --git a/framework/settings.py b/framework/settings.py >> index d306de2..e5b7746 100644 >> --- a/framework/settings.py >> +++ b/framework/settings.py >> @@ -204,6 +204,7 @@ DTS_ENV_PAT = r"DTS_*" >> PERF_SETTING = "DTS_PERF_ONLY" >> FUNC_SETTING = "DTS_FUNC_ONLY" >> HOST_DRIVER_SETTING = "DTS_HOST_DRIVER" >> +HOST_DRIVER_MODE_SETTING = "DTS_HOST_DRIVER_MODE" >> HOST_NIC_SETTING = "DTS_HOST_NIC" >> DEBUG_SETTING = "DTS_DEBUG_ENABLE" >> DEBUG_CASE_SETTING = "DTS_DEBUGCASE_ENABLE" >> diff --git a/tools/setup.py b/tools/setup.py >> index 9fcd70e..c6c72bc 100755 >> --- a/tools/setup.py >> +++ b/tools/setup.py >> @@ -280,7 +280,7 @@ def config_execution(): >> driver_option = {'prompt': 'Choose one of them', >> 'type': 'choice', >> 'help': 'Choose one of dpdk support driver', >> - 'options': ['igb_uio', 'vfio-pci'], >> + 'options': ['igb_uio', 'vfio-pci', 'vfio- >> pci:noiommu'], >> 'default': '0'} >> opt = Option(**driver_option) >> driver_name = opt.parse_input() >> -- >> 1.9.1 >