Received: by 2002:a05:6358:a55:b0:ec:fcf4:3ecf with SMTP id 21csp1096249rwb; Thu, 19 Jan 2023 06:38:02 -0800 (PST) X-Google-Smtp-Source: AMrXdXtIfjhJekQs+FfI1A+BubmthSCBmRSqpZw2ACiOucFqhhJx3aidHG5HgaFG0uMBMRNDn0SS X-Received: by 2002:a05:6402:2b92:b0:45a:7d2:9b35 with SMTP id fj18-20020a0564022b9200b0045a07d29b35mr11463207edb.0.1674139082169; Thu, 19 Jan 2023 06:38:02 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1674139082; cv=none; d=google.com; s=arc-20160816; b=kWY6TG4rG7M6CxARdqtHz/D6hL2ST3ZNgA1+M07xvJ4KJ9twOFgxJjhiEC0elyRnyX +mtwaJhWYQCKUxla5r+OpPppExfVcAMzWuRIWBpJkODT1VbdOfgthPY9QgwUobN0AeWU Vdbg9oFjOu/xjTIaHtTk0XIAg8nGyQ/d8t06nQ1lYWQTeXSuFAQLeiQkyvAS6WUNThNX RGNZfA4qnRozPFA3kC9d06cEolJPJd34s+/uVvQGK+jzYgKJQT/Mmhvv13cZMgix8JVG o/IO1/etXR7DR9BjRmu/JZfTKRp33KRFGq4idZhKQ+ufq5USsG17nKXw2gIImJN6ViOF XDKg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to:from :content-language:references:to:subject:user-agent:mime-version:date :message-id:dkim-signature; bh=A7fOmOvFqfoLIIXRxTSOr3he6+2cpP+PSNXdFWCYizE=; b=rScOLR1RtPgCvokI7zoEW/rsGfkyYQupGUpbPNapCYwM7yqpR6ElEB5qMun5Olz7AX VlNP+2guRFmUcfZakrZxaXHCJS9NtUQhji/m1SZ38tH4HvJxVTZXi5JfIsHfdypxwG/g IkGGqeKD4+PN3gyM+KMY8fEuz/BgtWYA7WgB3IioukrCudoH0BW3XHHK2AgN0a9yqCOl hfT9vWoXf2rzJCh9ImklwHo7Crb9sMo8xV/hkYlRf47BTwADjnqkkWxWCXF76xwaR5js GhQ/TSS3BbXrIQSLJlmsMCMUmIFi1q6ahWs6fGuFw1VQmamNVce37HQ0Az1iXuWa6r5N i7rg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=KpD4TZwv; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id ez1-20020a056402450100b00499b68299acsi29526944edb.314.2023.01.19.06.37.50; Thu, 19 Jan 2023 06:38:02 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=KpD4TZwv; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230123AbjASNY6 (ORCPT + 44 others); Thu, 19 Jan 2023 08:24:58 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35372 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230165AbjASNYv (ORCPT ); Thu, 19 Jan 2023 08:24:51 -0500 Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3CEF25B5A3 for ; Thu, 19 Jan 2023 05:24:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1674134684; x=1705670684; h=message-id:date:mime-version:subject:to:references:from: in-reply-to:content-transfer-encoding; bh=0rqq/hTud1TpM3IRmZ08IsKip23yN4USGI5J2nOh+I4=; b=KpD4TZwvc7RqrIj75/wpDXFtsRJLPWp6oQWWLkd9WrxTnl61z3Rd3nEi P8oYK7NlGcg09L4xhdPzcBXFZxjU8U4AOQR/YoKNEdWZ80Uh+t7zipwID SKU8wEDtBid5FVdpRTXTDss0TzI7lhYN+Cbzaw1NUcfw1rXSdU/L5ra4+ 1sduP7xirEr9Mq1alGbftkhd5gn/D+ONMLYKQ62V4Qp1AqolP7FYdxUPN wHrsEJETwbXoiBALaKsBGe7fUD3/XLmACjSEL8MX+jKP+B37/FRj4Ddbr 5WaYmj0TfyDuC3Yy24UaqUMjLOWKIHXHXcHgs295fiESBe1VGMy4iFYDe w==; X-IronPort-AV: E=McAfee;i="6500,9779,10594"; a="327359467" X-IronPort-AV: E=Sophos;i="5.97,229,1669104000"; d="scan'208";a="327359467" Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 19 Jan 2023 05:24:43 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10594"; a="728663472" X-IronPort-AV: E=Sophos;i="5.97,229,1669104000"; d="scan'208";a="728663472" Received: from linux.intel.com ([10.54.29.200]) by fmsmga004.fm.intel.com with ESMTP; 19 Jan 2023 05:24:43 -0800 Received: from [10.212.175.76] (kliang2-mobl1.ccr.corp.intel.com [10.212.175.76]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by linux.intel.com (Postfix) with ESMTPS id 2CC53580AE0; Thu, 19 Jan 2023 05:24:32 -0800 (PST) Message-ID: Date: Thu, 19 Jan 2023 08:24:25 -0500 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.6.1 Subject: Re: [PATCH V2 3/7] iommu/vt-d: Support Enhanced Command Interface To: Baolu Lu , joro@8bytes.org, will@kernel.org, dwmw2@infradead.org, robin.murphy@arm.com, robert.moore@intel.com, rafael.j.wysocki@intel.com, lenb@kernel.org, iommu@lists.linux.dev, linux-kernel@vger.kernel.org References: <20230118205006.3182907-1-kan.liang@linux.intel.com> <20230118205006.3182907-4-kan.liang@linux.intel.com> <379823f4-d1c3-8943-4afe-e33f4d21785c@linux.intel.com> Content-Language: en-US From: "Liang, Kan" In-Reply-To: <379823f4-d1c3-8943-4afe-e33f4d21785c@linux.intel.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,NICE_REPLY_A,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_NONE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2023-01-19 3:55 a.m., Baolu Lu wrote: > On 2023/1/19 4:50, kan.liang@linux.intel.com wrote: >> +#ifdef CONFIG_INTEL_IOMMU >> +#define ecmd_get_status_code(res)    ((res & 0xff) >> 1) >> + >> +/* >> + * Function to submit a command to the enhanced command interface. The >> + * valid enhanced command descriptions are defined in Table 47 of the >> + * VT-d spec. The VT-d hardware implementation may support some but not >> + * all commands, which can be determined by checking the Enhanced >> + * Command Capability Register. >> + * >> + * Return values: >> + *  - 0: Command successful without any error; >> + *  - Negative: software error value; >> + *  - Nonzero positive: failure status code defined in Table 48. >> + */ >> +int ecmd_submit_sync(struct intel_iommu *iommu, u8 ecmd, u64 oa, u64 ob) >> +{ >> +    unsigned long flags; >> +    u64 res; >> +    int ret; >> + >> +    if (!cap_ecmds(iommu->cap)) >> +        return -ENODEV; >> + >> +    raw_spin_lock_irqsave(&iommu->register_lock, flags); >> + >> +    res = dmar_readq(iommu->reg + DMAR_ECRSP_REG); >> +    if (res & DMA_ECMD_ECRSP_IP) { >> +        ret = -EBUSY; >> +        goto err; >> +    } >> + >> +    /* >> +     * Unconditionally write the operand B, because >> +     * - There is no side effect if an ecmd doesn't require an >> +     *   operand B, but we set the register to some value. >> +     * - It's not invoked in any critical path. The extra MMIO >> +     *   write doesn't bring any performance concerns. >> +     */ >> +    dmar_writeq(iommu->reg + DMAR_ECEO_REG, ob); >> +    dmar_writeq(iommu->reg + DMAR_ECMD_REG, ecmd | (oa << >> DMA_ECMD_OA_SHIFT)); >> + >> +    IOMMU_WAIT_OP(iommu, DMAR_ECRSP_REG, dmar_readq, >> +              !(res & DMA_ECMD_ECRSP_IP), res); >> + >> +    if (res & DMA_ECMD_ECRSP_IP) { >> +        ret = -ETIMEDOUT; >> +        goto err; >> +    } >> + >> +    ret = ecmd_get_status_code(res); >> +err: >> +    raw_spin_unlock_irqrestore(&iommu->register_lock, flags); >> + >> +    return ret; >> +} >> +#endif /* CONFIG_INTEL_IOMMU */ > > Can we remove the "#ifdef CONFIG_INTEL_IOMMU"? In dmar.c, no, there will be a compiler warning when the CONFIG_INTEL_IOMMU is not set. > Or if this is currently > only intel-iommu specific, how about moving it to drivers/iommu/intel > /iommu.c? > Yes, it should OK to move it to iommu.c to avoid the "#ifdef CONFIG_INTEL_IOMMU". Now, it's intel-iommu specific. Thanks, Kan