From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 48A6EA00C2; Tue, 8 Mar 2022 13:49:16 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C6D164068E; Tue, 8 Mar 2022 13:49:15 +0100 (CET) Received: from mail-ed1-f52.google.com (mail-ed1-f52.google.com [209.85.208.52]) by mails.dpdk.org (Postfix) with ESMTP id EDE394068B for ; Tue, 8 Mar 2022 13:49:14 +0100 (CET) Received: by mail-ed1-f52.google.com with SMTP id h13so12169115ede.5 for ; Tue, 08 Mar 2022 04:49:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=emumba-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=lELxkp4k/XXJ1/0Lt9acMvhRf4AsCK9VJoX5soKr9Ys=; b=Tik/P4OOHTSW1HJS5rSeAExLnT/KihGuGuTerHXygxI9aERDcCMK45jvlPqDKhj+P6 o0OJyPPyK9oHMv+CDQLcnRsRleMXcajto90+LCIW82Cz+jmOIgopVv6rVm7lk39b0Twp 6t/xNjKl2I/kQOZO3AeGJqte++riI09QXY55woRbVbA3KSWL6VftIXtnfXD0XzDG8wRY xz8ZOqwXz1a/88AK/TQ8zJlwYK18ce66OLR32Y46J4UtbHrFx/VIJ/ow2XL5pF6p1ygJ /OgRIZKWowQDOPiqoklwNvX47stFppa7AkXz9RnHzdwxdqk9LdJO0atPoTvnu9Z+iu2O FY/w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=lELxkp4k/XXJ1/0Lt9acMvhRf4AsCK9VJoX5soKr9Ys=; b=jBytjW31o2Aqh7D0YZf6w9SWHUk/L2rHpSYeUGUPBDKAYccbCWDZgkWuaINhuCnrlt Nye9dxnHv45yxPfqhq2XL7K4Iop1Srk2yIUJPTxgsyCnTbKhY528LjwU1ZzC9SnheP0z D4cETnAJKIRsS4fDa04Yx1sHwPewMVZxOSClImNeZyh8OmWHd4aku5eK1kyABjU8T+0p dyCflyY73jdKNRKgyclk9NKJarvLiQ/R88IuxDlIuGSTCxLD+UE6jze70UZR5daoujUN x/A45HjYCOCGuccFBOjUDlEInGnA3YaRDwFxzrXSeSQJpiuW/gdSxoiGMIH9z/W+4PvK 9LeQ== X-Gm-Message-State: AOAM53015+IhF0Cxif4UJbHiiOSsjJZLPri47JDKQCSVy2tSzSDOsVT4 +EFofXJry0xITgItXEJUWgzw X-Google-Smtp-Source: ABdhPJzuIprl/tud5ZFILVpxFS73x2jlEb2bcoaNziFbY/g2m6lnxvRmobkLftFLBPoUe/mhcIbpww== X-Received: by 2002:aa7:dbd6:0:b0:408:4a31:97a5 with SMTP id v22-20020aa7dbd6000000b004084a3197a5mr16371363edt.186.1646743754643; Tue, 08 Mar 2022 04:49:14 -0800 (PST) Received: from localhost.localdomain ([203.99.184.187]) by smtp.gmail.com with ESMTPSA id kb28-20020a1709070f9c00b006d5d8bf1b72sm5781989ejc.78.2022.03.08.04.49.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Mar 2022 04:49:14 -0800 (PST) From: Fidaullah Noonari X-Google-Original-From: Fidaullah Noonari To: stephen@networkplumber.org Cc: dev@dpdk.org, Fidaullah Noonari Subject: [PATCH] usertools: add check for IOMMU support in dpdk-devbind Date: Tue, 8 Mar 2022 17:49:01 +0500 Message-Id: <20220308124901.9838-1-fidaullah.noonari@gmai.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org binding with vfio driver, when IOMMU is disabled, causes program to crash. this patch checks for IOMMU support, if it is disabled, changes vfio into unsafe noiommu mode and prints a warning message. Signed-off-by: Fidaullah Noonari --- usertools/dpdk-devbind.py | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/usertools/dpdk-devbind.py b/usertools/dpdk-devbind.py index ace4627218..f42eead0c4 100755 --- a/usertools/dpdk-devbind.py +++ b/usertools/dpdk-devbind.py @@ -466,6 +466,26 @@ def unbind_all(dev_list, force=False): unbind_one(d, force) +def check_iommu(): + """Check if IOMMU is enabled on system""" + if len(os.listdir("/sys/class/iommu")) != 0: + return True + print("Warning: IOMMU support disabled") + return False + + +def enable_noiommu_mode(): + """Enables the noiommu mode for vfio drivers""" + filename = "/sys/module/vfio/parameters/enable_unsafe_noiommu_mode" + try: + f = open(filename, "w") + except: + sys.exit("Error: unable to enable noiommu mode, could not open '%s'" % filename) + f.write("1") + f.close() + print("Warning: enabling unsafe no IOMMU mode for vfio drivers") + + def bind_all(dev_list, driver, force=False): """Bind method, takes a list of device locations""" global devices @@ -492,6 +512,11 @@ def bind_all(dev_list, driver, force=False): except ValueError as ex: sys.exit(ex) + # check for IOMMU support + if not check_iommu(): + if driver == "vfio-pci": + enable_noiommu_mode() + for d in dev_list: bind_one(d, driver, force) -- 2.25.1