Re: PCI resources above 4GB

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Apr 11, 2012 at 8:33 AM, Steven Newbury <steve@xxxxxxxxxxxxxxx> wrote:
> On 11/04/12 04:37, Bjorn Helgaas wrote:

>> If the host bridge has a _PRS with settings above 4G that we could
>> enable, that might be worthwhile.  I haven't seen _PRS on a host
>> bridge yet, and Linux would ignore it if it existed, but that would
>> be a plausible approach.  (Turn on CONFIG_PNP_DEBUG_MESSAGES and
>> boot with pnp.debug=1 to see if you have any _PRS.)
>
> Attached dmesg with pnp.debug=1, also includes working radeon with
> cardbus disabled in BIOS.

As expected, your host bridge doesn't have a _PRS method, so there's
no good way to change its apertures.

>> Do you happen to know what Windows does in that

> That's why I'm hoping to be able to reallocate the i915 aperture
> above 4GB, but this depends on what the chipset is capable of
> rather than what the BIOS exposes.

We don't have native drivers in Linux for every chipset.  For example,
to my knowledge, Linux doesn't know anything about the Intel 965 spec
ifics you mentioned.  Therefore, we do rely on the abstract
information the BIOS exposes.  Sometimes that we can't exploit every
hardware feature.  That's part of the tradeoff between having a
generic kernel vs. having to write new code for every new machine.

>> situation?   Does the radeon work and the i915 not, or does it somehow
>> make both work?   Is there any way you could collect the device info
>> under Windows, using AIDA64 (http://www.aida64.com/) or similar?

> From reading Microsoft documents, they always try putting PCI
> resources above 4GB on 64bit Windows since Vista, even
> using bounce buffers where necessary, and supported by the
> hardware, only falling back below 4GB when all else fails.

I don't doubt that Windows tries to put PCI resources above 4GB, but I
suspect it does so only when it can place them inside a host bridge
aperture reported via _CRS.  I'd be very surprised if 64-bit Windows
assigned >4GB PCI resources on this machine.

Here's the basic problem: when we hot-add a PCI device, we have to
know what resources can possibly be assigned to it.  When we have more
than one host bridge,  we have to know the apertures of each host
bridge so we can allocate from the correct ones.  That's what _CRS
tells us.

So the short answer is that by default Linux uses _CRS, and it won't
work any better than Windows in this case.

If you want to make some tweaks and just live with the fact of always
having to use "pci=nocrs", that's fine.  I don't personally have time
to mess with that, and I don't know whether it would make sense to
push those tweaks upstream, but you can likely make it work somehow.

Bjorn
--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux