From owner-freebsd-x11@freebsd.org Mon Apr 29 16:56:36 2019 Return-Path: Delivered-To: freebsd-x11@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 41A661596528 for ; Mon, 29 Apr 2019 16:56:36 +0000 (UTC) (envelope-from johalun@FreeBSD.org) Received: from smtp.freebsd.org (smtp.freebsd.org [96.47.72.83]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "smtp.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id A71BB8C454; Mon, 29 Apr 2019 16:56:35 +0000 (UTC) (envelope-from johalun@FreeBSD.org) Received: from [192.168.0.83] (unknown [75.167.244.96]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) (Authenticated sender: johalun) by smtp.freebsd.org (Postfix) with ESMTPSA id 58563F590; Mon, 29 Apr 2019 16:56:35 +0000 (UTC) (envelope-from johalun@FreeBSD.org) Subject: Re: dmar, dma_pool, etc To: Tycho Nightingale Cc: "freebsd-x11@freebsd.org" References: <9E2356CF-6483-4C06-B4A8-0120088063FE@freebsd.org> From: Johannes Lundberg X-Tagtoolbar-Keys: D20190429175634058 Message-ID: Date: Mon, 29 Apr 2019 17:56:34 +0100 User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1 MIME-Version: 1.0 In-Reply-To: <9E2356CF-6483-4C06-B4A8-0120088063FE@freebsd.org> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Content-Language: en-US X-Rspamd-Queue-Id: A71BB8C454 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.98 / 15.00]; local_wl_from(0.00)[FreeBSD.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.999,0]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; NEURAL_HAM_SHORT(-0.98)[-0.980,0]; ASN(0.00)[asn:11403, ipnet:96.47.64.0/20, country:US] X-BeenThere: freebsd-x11@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: X11 on FreeBSD -- maintaining and support List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 29 Apr 2019 16:56:36 -0000 On 4/29/19 3:41 PM, Tycho Nightingale wrote: > Hi, > >> On Apr 27, 2019, at 2:46 PM, Johannes Lundberg wrote: >> >> Hi >> >> Tycho, I'd like to understand what is the goal with the changes to >> linuxkpi and what you plan to use it for. LinuxKPI base is tightly >> connected to LinuxkPI GPLv2 and the DRM drivers in ports. We need to >> make sure that any change to base LinuxKPI is compatible with what we >> have in ports, or patch the ports to handle the changes in base. > Understood. The reports of the recent change to LinuxKPI having untoward effects are concerning. I’m trying to get more information to understand them and at the same time setup a machine in an attempt to reproduce them. > > Stepping back a bit, my addition of bus_dma to LinuxKPI is to make the mlx4/mlx5 drivers work in an environment where the IOMMU is enabled. Before physical addresses and dma addresses were not differentiated making this impossible. The intention of my patch was to get these devices into compliance and perhaps also other devices; minimally when the IOMMU is disabled things should behave as they were before. Got it! Thanks for the explanation. > >> For example, there is a CONFIG_INTEL_IOMMU options in Linux code that >> enables DMAR. It turns out, ttm has it's own dma_pool implementation. >> This is possible since in Linux dma_pool is private to dmapool.c. >> Enabling this option for us cause a compile error since dma_pool is >> public in base linuxkpi. I don't know if this is really a problem if >> CONFIG_INTEL_IOMMU (or CONFIG_SWIOTBL) are options that we'll never use… > Sounds like there is some redundancy there which can be eliminated. But with respect to your question of enabling the IOMMU outside of base; that’s more than what I intended to. Yes I understand. Can struct dma_pool be private in your implementation? I think it's better to follow Linux right away so we don't end up with collisions in the future when we decide to enable new features. > >> Also, we do have a problem with Firefox causing GPU hangs so I'd >> appreciate it if Tycho could look through linuxkpi_gplv2, drm and >> i915kms (i915kms does not use ttm so no need to look there for problems >> with Intel GPU) to see if there are any places needing patching. I know >> there's one vtophys() call in fb_mmap() but IIRC, that is never used. >> I'll look into that next. There are also uses of PHYS_TO_DMAP() and >> VM_PAGE_TO_PHYS(). Would any of these need patching? >> >> Use the default branch at https://github.com/FreeBSDDesktop/kms-drm > I’m planning to have a look, but to get things working as before nothing further should need patching even if the physical addresses are treated as dma addresses. > > For the GPU it’s important to note that enabling the IOMMU didn’t work before, was not a goal of this error, and would be expected to not work right now. However, it’s possible this change revealed some cases where some DMAR functionality was enabled in the BIOS and since the support is incomplete breakage is happening. Or something else that I am overlooking right now. Especially i915's GEM (i915_gem.c) have a lot of FreeBSD specific patches related to memory. Any FreeBSD code in drm drivers is within #ifndef __linux__  tags so it's easy locate our patches. It could also be some inconsistency between linuxkpi in base and linuxkpi gplv2 in ports. I don't think disabling options in BIOS in the correct solution. This would also disable functionality for virtual machines. > > > Tycho