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 D1CE2A052A; Mon, 25 Jan 2021 18:08:35 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 8F3E2140FDF; Mon, 25 Jan 2021 18:08:35 +0100 (CET) Received: from mail-wr1-f48.google.com (mail-wr1-f48.google.com [209.85.221.48]) by mails.dpdk.org (Postfix) with ESMTP id C024F140FDC for ; Mon, 25 Jan 2021 18:08:33 +0100 (CET) Received: by mail-wr1-f48.google.com with SMTP id l12so13632022wry.2 for ; Mon, 25 Jan 2021 09:08:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mayadata-io.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=ISgvixeO0ft3cjtnxt3GuDBSlr7vLaK/MIDPXMRwXMQ=; b=fOq5R0cFfNwLcjGsCbK5CYFW/JD/RDemKnj0ASEn6RUDUKEqPLpdPBLzgK1V0V53dk cf/hjqGJRIjJQkjOF81xKgucjezJj8uTeL5tfKV0wFZclgyalWL8qXCQlViR/jj71AGQ stvz2CcPRmAzwBaDyXJMIzsQY9mwKbGFrK6kcLydFJREaio4rkmOjzkcI3f3RwAl1A3U fCTancKDC+DCgiAMpz3QEQJhadkWpdj1CZuyR8yZxvvgUY08/VmX1kCgnzSrMZr+qT+D 8cdjftIdecsRZsfmHoZ7pnzhYKLvpYssTytL9O6kQLYZUvltFywoK6IC0emkzkdERh+S rwkQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=ISgvixeO0ft3cjtnxt3GuDBSlr7vLaK/MIDPXMRwXMQ=; b=baSxyPjTyejUtp4Mya/g8h66V1WVyjevihN9bJnisFKdkK/YNWEYl/SMq6gEhHNm8i xp2S2mWe97qkG99LWgvCrvPQnuMwr3BDKd0LE5nf4S9iBPgk+WgFEg+TDzfypnBrrXDc dIXrmqbmAVcOnyDNgcSEKFSeGeYywI0RLsxe5jE7F4wW5brPDQVOnOwRoDJeIngAPXNY IPqWbnZYFDkIUhiiDzQmkV8RP12CQWZ/TuHlxfvppcZnMH2pbU9s6B94jp1eqVlWD9S+ IBh4Mf9f87Qt4DCqSWmIxM8fAUhBxkhewaMhsvwt3yI46CYeJLYT2gJbNo78XefuA2TV +J6A== X-Gm-Message-State: AOAM53340E7aEvNt3AbV8Uf00jG9US4R+SSU4jMnwDbu+Olx3eP5F3Kv 1QFMFWdU5tjeNxaUFESQhgm5OA== X-Google-Smtp-Source: ABdhPJxD7vqx+/IbdUV3DYVtAvT0LV0htrggycDyhfCmoM/56YdWU/U0uqb3qRbFRJTn/XyYD7LYGA== X-Received: by 2002:adf:ba47:: with SMTP id t7mr2037374wrg.285.1611594513560; Mon, 25 Jan 2021 09:08:33 -0800 (PST) Received: from FENIX.datacoresoftware.com (cpc98320-croy25-2-0-cust77.19-2.cable.virginm.net. [80.235.134.78]) by smtp.gmail.com with ESMTPSA id v11sm23003426wrt.25.2021.01.25.09.08.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 Jan 2021 09:08:32 -0800 (PST) From: Nick Connolly To: talshn@nvidia.com, dmitry.kozliuk@gmail.com, pallavi.kadam@intel.com, thomas@monjalon.net Cc: dev@dpdk.org, Nick Connolly Date: Mon, 25 Jan 2021 17:08:21 +0000 Message-Id: <20210125170821.11306-1-nick.connolly@mayadata.io> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [dpdk-dev] [PATCH] bus/pci: nvme on Windows requires class id and bus 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 Sender: "dev" Attaching to an NVMe disk on Windows using SPDK requires the PCI class ID and device.bus fields. Decode the class ID from the PCI device info strings if it is present and set device.bus. Signed-off-by: Nick Connolly --- drivers/bus/pci/windows/pci.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/bus/pci/windows/pci.c b/drivers/bus/pci/windows/pci.c index f66258452..3d11444c2 100644 --- a/drivers/bus/pci/windows/pci.c +++ b/drivers/bus/pci/windows/pci.c @@ -280,17 +280,24 @@ parse_pci_hardware_id(const char *buf, struct rte_pci_id *pci_id) { int ids = 0; uint16_t vendor_id, device_id; - uint32_t subvendor_id = 0; + uint32_t subvendor_id = 0, class_id = 0; + const char *cp; ids = sscanf_s(buf, "PCI\\VEN_%" PRIx16 "&DEV_%" PRIx16 "&SUBSYS_%" PRIx32, &vendor_id, &device_id, &subvendor_id); if (ids != 3) return -1; + /* Try and find PCI class ID */ + for (cp = buf; !(cp[0] == 0 && cp[1] == 0); cp++) + if (*cp == '&' && sscanf_s(cp, "&CC_%" PRIx32, &class_id) == 1) + break; + pci_id->vendor_id = vendor_id; pci_id->device_id = device_id; pci_id->subsystem_device_id = subvendor_id >> 16; pci_id->subsystem_vendor_id = subvendor_id & 0xffff; + pci_id->class_id = class_id; return 0; } @@ -339,6 +346,7 @@ pci_scan_one(HDEVINFO dev_info, PSP_DEVINFO_DATA device_info_data) if (ret != 0) goto end; + dev->device.bus = &rte_pci_bus.bus; dev->addr = addr; dev->id = pci_id; dev->max_vfs = 0; /* TODO: get max_vfs */ -- 2.25.1