All of lore.kernel.org
 help / color / mirror / Atom feed
From: Bjorn Helgaas <helgaas@kernel.org>
To: "Christian König" <deathsimple@vodafone.de>
Cc: linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org,
	amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org,
	platform-driver-x86@vger.kernel.org
Subject: Re: [PATCH 2/4] PCI: add functionality for resizing resources v2
Date: Wed, 12 Apr 2017 11:37:53 -0500	[thread overview]
Message-ID: <20170412163753.GD25197@bhelgaas-glaptop.roam.corp.google.com> (raw)
In-Reply-To: <70ea3ef3-10a6-01f1-125c-dbf89e87b1d0@vodafone.de>

On Tue, Apr 11, 2017 at 05:37:04PM +0200, Christian König wrote:

> >>+int pci_resize_resource(struct pci_dev *dev, int resno, int size)
> >>+{
> >>+	struct resource *res = dev->resource + resno;
> >>+	u32 sizes = pci_rbar_get_possible_sizes(dev, resno);
> >>+	int old = pci_rbar_get_current_size(dev, resno);
> >>+	u64 bytes = 1ULL << (size + 20);
> >>+	int ret = 0;
> >I think we should fail the request if the device is enabled, i.e., if
> >the PCI_COMMAND_MEMORY bit is set.  We can't safely change the BAR
> >while memory decoding is enabled.
> >
> >I know there's code in pci_std_update_resource() that turns off
> >PCI_COMMAND_MEMORY, but I think that's a mistake: I think it should
> >fail when asked to update an enabled BAR the same way
> >pci_iov_update_resource() does.
> >
> >I'm not sure why you call pci_reenable_device() below, but I think I
> >would rather have the driver do something like this:
> >
> >   pci_disable_device(dev);
> >   pci_resize_resource(dev, 0, size);
> >   pci_enable_device(dev);
> >
> >That way it's very clear to the driver that it must re-read all BARs
> >after resizing this one.
> 
> I've tried it, but this actually doesn't seem to work.
> 
> At least on the board I've tried pci_disable_device() doesn't clear
> the PCI_COMMAND_MEMORY bit, it just clears the master bit.

Yeah, you're right.  We generally turn *on* PCI_COMMAND_MEMORY in the
pci_enable_device() path, but the pci_disable_device() path doesn't
turn it off.

> Additional to that the power management reference counting
> pci_disable_device() and pci_enable_device() doesn't look like what
> I want for this functionality.
> 
> How about the driver needs to disabled memory decoding itself before
> trying to resize anything?

There are a few places that do that, so maybe that's the best option.

Bjorn

  reply	other threads:[~2017-04-12 16:38 UTC|newest]

Thread overview: 71+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-03-13 12:41 Resizeable PCI BAR support V3 Christian König
2017-03-13 12:41 ` Christian König
2017-03-13 12:41 ` [PATCH 1/4] PCI: add resizeable BAR infrastructure v3 Christian König
2017-03-13 12:41   ` Christian König
2017-03-14 13:09   ` kbuild test robot
2017-03-14 13:09     ` kbuild test robot
2017-03-24 15:28   ` Bjorn Helgaas
2017-03-13 12:41 ` [PATCH 2/4] PCI: add functionality for resizing resources v2 Christian König
2017-03-13 12:41   ` Christian König
2017-03-13 16:43   ` Andy Shevchenko
2017-03-13 16:43     ` Andy Shevchenko
2017-03-13 16:43     ` Andy Shevchenko
2017-04-11  9:14     ` Christian König
2017-04-11  9:14       ` Christian König
2017-03-14  9:01   ` kbuild test robot
2017-03-24 21:34   ` Bjorn Helgaas
2017-04-11 15:37     ` Christian König
2017-04-12 16:37       ` Bjorn Helgaas [this message]
2017-03-13 12:41 ` [PATCH 3/4] x86/PCI: Enable a 64bit BAR on AMD Family 15h (Models 30h-3fh) Processors Christian König
2017-03-13 12:41   ` Christian König
2017-03-13 16:49   ` Andy Shevchenko
2017-03-13 16:49     ` Andy Shevchenko
2017-03-13 16:49     ` Andy Shevchenko
2017-04-11  9:21     ` Christian König
2017-04-11  9:21       ` Christian König
2017-03-14  9:25   ` kbuild test robot
2017-03-14  9:25     ` kbuild test robot
2017-03-24 15:47   ` Bjorn Helgaas
2017-03-24 15:47     ` Bjorn Helgaas
2017-04-11 15:48     ` Christian König
2017-04-11 15:48       ` Christian König
2017-04-12 16:55       ` Bjorn Helgaas
2017-04-25 13:01         ` Christian König
2017-05-17 21:36           ` Bjorn Helgaas
2017-03-13 12:41 ` [PATCH 4/4] drm/amdgpu: resize VRAM BAR for CPU access Christian König
2017-03-13 12:41   ` Christian König
2017-03-13 16:51   ` Andy Shevchenko
2017-03-13 16:51     ` Andy Shevchenko
2017-03-15  7:23   ` Ayyappa Ch
2017-03-15  7:23     ` Ayyappa Ch
2017-03-15  7:23     ` Ayyappa Ch
2017-03-15  7:37     ` Christian König
2017-03-15  7:37       ` Christian König
2017-03-15  8:25       ` Zhou, David(ChunMing)
2017-03-15  8:25         ` Zhou, David(ChunMing)
2017-03-15  8:25         ` Zhou, David(ChunMing)
2017-03-15  9:29         ` Christian König
2017-03-15  9:29           ` Christian König
2017-03-15  9:29           ` Christian König
2017-03-16  2:19           ` Zhang, Jerry
2017-03-16  2:19             ` Zhang, Jerry
2017-03-16  2:19             ` Zhang, Jerry
2017-03-16  2:25             ` Alex Deucher
2017-03-16  2:25               ` Alex Deucher
2017-03-16  2:25               ` Alex Deucher
2017-03-16  2:41               ` Zhang, Jerry
2017-03-16  2:41                 ` Zhang, Jerry
2017-03-23 14:30                 ` Sagalovitch, Serguei
2017-03-23 14:30                   ` Sagalovitch, Serguei
2017-03-23 14:30                   ` Sagalovitch, Serguei
2017-03-23 15:56                   ` Christian König
2017-03-23 15:56                     ` Christian König
2017-03-15 10:42       ` Ayyappa Ch
2017-03-15 10:42         ` Ayyappa Ch
2017-03-15 10:42         ` Ayyappa Ch
2017-03-15 11:03         ` Christian König
2017-03-15 11:03           ` Christian König
2017-03-15 16:08       ` Deucher, Alexander
2017-03-15 16:08         ` Deucher, Alexander
2017-03-15 16:08         ` Deucher, Alexander
2017-03-24 21:42   ` Bjorn Helgaas

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170412163753.GD25197@bhelgaas-glaptop.roam.corp.google.com \
    --to=helgaas@kernel.org \
    --cc=amd-gfx@lists.freedesktop.org \
    --cc=deathsimple@vodafone.de \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=platform-driver-x86@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.