Received: by 2002:a05:6a10:6744:0:0:0:0 with SMTP id w4csp2074460pxu; Fri, 9 Oct 2020 07:21:05 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzX++j1eX/qpsTfnp9JCXOAzau9KBiKCzCcMdHuZ4E9bocmFO3fDEJcGWluNL3xjGcsldKi X-Received: by 2002:a17:906:7113:: with SMTP id x19mr14586503ejj.59.1602253265264; Fri, 09 Oct 2020 07:21:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1602253265; cv=none; d=google.com; s=arc-20160816; b=Os5WMjDgsR5bQ2m4IgSewXSausqMJfRNEcUzDkcXBMKKcZrYfwPpSMFWQjsFS4jNc0 qi+8jSgFHecvJ4XBGrIrbJNDTp+E6LdmfqS275WFtcoFvY4/nDgp3FvTJojEJHUcdrAr JMJmfJjqBPCPdEQIbT89HlhpT7OYv9ihsMh+LbrR6DTYaZslatl/72/XtY7tuLf722QE s7HTLwnOE0XyPYN3QDqjrkrP63gB4VX0FWMKABQ7y2IAlYG0Dz20iD/hwm/UGq+GysBd f7cyXLLelLQP7zvdfPyottulwKdz2XK+ckqdwNT7dgZ83hNUCxZX7t2cIwkIfGQS+a9a LDZA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=MM70QuqTQsUBVq7gYXvXBZty2HeYwYo1AwlGqBndKzc=; b=ISJgkPcxGH3WbZIfnfM6OuFsjHWrqj4L0bgomCQeMUGsG7l0pj/4Re++HoJ5E5Y9aP /ReJeYNG0ViFz75vi/k4XoBussRL9QUPecqp8gWAGtxGN4YIFzHL16tzqZAcxC5+dNrZ yII9xfuHcKGwbofHO2GXqLfTob4p4zyu7u+GTSySINxgAv5ByLveHTPpLKuYLUnxcR0/ Yw6aeYyKUc00i29BS5MDXa4QWycp7KiMkUo/7h6e6VJCJ8Yzalkgds9PdeGIfEcxwREG HVd9vZueO7C3HEzoO0yevb49i2j9qH3CO2PwHI7JSRu8I8vPfnlGO49mts3l2LkV8fV/ smAQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ffwll.ch header.s=google header.b=TXHPzxH9; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id g5si6445110ejr.370.2020.10.09.07.20.41; Fri, 09 Oct 2020 07:21:05 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@ffwll.ch header.s=google header.b=TXHPzxH9; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388687AbgJIOTG (ORCPT + 99 others); Fri, 9 Oct 2020 10:19:06 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51726 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731820AbgJIOTF (ORCPT ); Fri, 9 Oct 2020 10:19:05 -0400 Received: from mail-ot1-x341.google.com (mail-ot1-x341.google.com [IPv6:2607:f8b0:4864:20::341]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A4887C0613D8 for ; Fri, 9 Oct 2020 07:19:05 -0700 (PDT) Received: by mail-ot1-x341.google.com with SMTP id 60so9136364otw.3 for ; Fri, 09 Oct 2020 07:19:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=MM70QuqTQsUBVq7gYXvXBZty2HeYwYo1AwlGqBndKzc=; b=TXHPzxH9Da/xVr/PCQoDGy8c0zPWy+ggD3CN9+uIIarhuboqtJeD+WQppuYxHsd6Lw Y7BHU63LYKcn8Q19C0ojPAIbHvLgUU7idHjBxl/cqvgWdtq9sYwq7aJadM3ewUTikvYS Or+ZtapYPyo5QGIWg5F96VAf0fQY9D81hLV+0= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=MM70QuqTQsUBVq7gYXvXBZty2HeYwYo1AwlGqBndKzc=; b=hlpad+9vXlZU9DEUlVt1zpFhFp1sOdkjqdqOvpT9fJXxc3vUvoFhFGL7T7+LJujcxv J2lk42KqcmWKoBzoyXf/6EAjpO8dN2v5YzUYXCkw1Ch3QECa8IWzToX7enyEZgAFMRAx HLkxdMJQD1EJaAc/veDJdAWghB57oMqM5f87AKpwNEUhCJCk2NafHCk8GSF4OzA+Y/tB lRP/BttespHFT5tJFuWpIa/1wziGg9vfgnOI8kfLtWJ0L484DcoOqUSoBSWj4Xj7V3ut eIkJKdY1mFMWPGNwa5tHIJoKqSON4NaD/TlUUxljjkYK1lU9z8NKMnJ/pif5EPjk7tm5 D+RQ== X-Gm-Message-State: AOAM532FsvOZOCVQQeyqbAiji8FH2jCyVhxhvD0zMRcPrAOAoItDG2cw RZvh+TZM45C2cVj1bo6JmTdvfHOeCmf/nGFqY+H6Pg== X-Received: by 2002:a05:6830:1c3c:: with SMTP id f28mr9534834ote.188.1602253144991; Fri, 09 Oct 2020 07:19:04 -0700 (PDT) MIME-Version: 1.0 References: <20201009075934.3509076-1-daniel.vetter@ffwll.ch> <20201009075934.3509076-18-daniel.vetter@ffwll.ch> <20201009094750.GQ6112@intel.com> <20201009104154.GR6112@intel.com> In-Reply-To: <20201009104154.GR6112@intel.com> From: Daniel Vetter Date: Fri, 9 Oct 2020 16:18:53 +0200 Message-ID: Subject: Re: [PATCH v2 17/17] drm/i915: Properly request PCI BARs To: =?UTF-8?B?VmlsbGUgU3lyasOkbMOk?= Cc: DRI Development , LKML , linux-s390 , linux-samsung-soc , Jan Kara , Kees Cook , KVM list , Jason Gunthorpe , Linux PCI , Linux MM , =?UTF-8?B?SsOpcsO0bWUgR2xpc3Nl?= , John Hubbard , Bjorn Helgaas , Daniel Vetter , Dan Williams , Andrew Morton , Linux ARM , "open list:DMA BUFFER SHARING FRAMEWORK" Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Oct 9, 2020 at 12:42 PM Ville Syrj=C3=A4l=C3=A4 wrote: > > On Fri, Oct 09, 2020 at 12:01:39PM +0200, Daniel Vetter wrote: > > On Fri, Oct 9, 2020 at 11:47 AM Ville Syrj=C3=A4l=C3=A4 > > wrote: > > > > > > On Fri, Oct 09, 2020 at 09:59:34AM +0200, Daniel Vetter wrote: > > > > When trying to test my CONFIG_IO_STRICT_DEVMEM changes I realized t= hey > > > > do nothing for i915. Because i915 doesn't request any regions, like > > > > pretty much all drm pci drivers. I guess this is some very old > > > > remnants from the userspace modesetting days, when we wanted to > > > > co-exist with the fbdev driver. Which usually requested these > > > > resources. > > > > > > > > But makes me wonder why the pci subsystem doesn't just request > > > > resource automatically when we map a bar and a pci driver is bound? > > > > > > > > Knowledge about which pci bars we need kludged together from > > > > intel_uncore.c and intel_gtt.c from i915 and intel-gtt.c over in th= e > > > > fake agp driver. > > > > > > > > Signed-off-by: Daniel Vetter > > > > Cc: Jason Gunthorpe > > > > Cc: Kees Cook > > > > Cc: Dan Williams > > > > Cc: Andrew Morton > > > > Cc: John Hubbard > > > > Cc: J=C3=A9r=C3=B4me Glisse > > > > Cc: Jan Kara > > > > Cc: Dan Williams > > > > Cc: linux-mm@kvack.org > > > > Cc: linux-arm-kernel@lists.infradead.org > > > > Cc: linux-samsung-soc@vger.kernel.org > > > > Cc: linux-media@vger.kernel.org > > > > Cc: Bjorn Helgaas > > > > Cc: linux-pci@vger.kernel.org > > > > --- > > > > drivers/gpu/drm/i915/intel_uncore.c | 25 +++++++++++++++++++++++-- > > > > 1 file changed, 23 insertions(+), 2 deletions(-) > > > > > > > > diff --git a/drivers/gpu/drm/i915/intel_uncore.c b/drivers/gpu/drm/= i915/intel_uncore.c > > > > index 54e201fdeba4..ce39049d8919 100644 > > > > --- a/drivers/gpu/drm/i915/intel_uncore.c > > > > +++ b/drivers/gpu/drm/i915/intel_uncore.c > > > > @@ -1692,10 +1692,13 @@ static int uncore_mmio_setup(struct intel_u= ncore *uncore) > > > > struct pci_dev *pdev =3D i915->drm.pdev; > > > > int mmio_bar; > > > > int mmio_size; > > > > + int bar_selection; > > > > > > Signed bitmasks always make me uneasy. But looks like > > > that's what it is in the pci api. So meh. > > > > Yeah it's surprising. > > > > > > + int ret; > > > > > > > > mmio_bar =3D IS_GEN(i915, 2) ? 1 : 0; > > > > + bar_selection =3D BIT (2) | BIT(mmio_bar); > > > ^ > > > spurious space > > > > > > That's also not correct for gen2 I think. > > > > > > gen2: > > > 0 =3D GMADR > > > 1 =3D MMADR > > > 2 =3D IOBAR > > > > > > gen3: > > > 0 =3D MMADR > > > 1 =3D IOBAR > > > 2 =3D GMADR > > > 3 =3D GTTADR > > > > > > gen4+: > > > 0+1 =3D GTTMMADR > > > 2+3 =3D GMADR > > > 4 =3D IOBAR > > > > > > Maybe we should just have an explicit list of bars like that in a > > > comment? > > > > > > I'd also suggest sucking this bitmask calculation into a small helper > > > so you can reuse it for the release. > > > > tbh I just hacked this up for testing. Given how almost no other drm > > driver does this, I'm wondering whether we should or not. > > > > Also the only reason why I didn't just use the pci_request_regions > > helper is to avoid the vga ioport range, since that's managed by > > vgaarbiter. > > VGA io range isn't part of any bar. Or do you mean just the io decode > enable bit in the pci command register? That should be just a matter > or pci_enable_device() vs. pci_enable_device_mem() I think. So nothing > to do with which bars we've requested IIRC. > > > > > So I think if we go for this for real we should: > > - register the vga ioport range in the vgaarbiter > > - have a pci_request_iomem_regions helper that grabs all mem bars > > - roll that out to all drm pci drivers > > > > Or something like that. The other complication is when we resize the > > iobar. So not really sure what to do here. > > We resize it? By default I thought firmware puts everything (well, squeezes) into the lower 32bit. Maybe they stopped doing that. So when we want the full bar (for discrete at least) we need to resize it and put it somewhere in the 64bit range above end of system memory. So I guess correct phrasing is "we will resize it" :-) -Daniel --=20 Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch