2002-02-12 14:23:54

by SA

[permalink] [raw]
Subject: Write-combining

Dear list,

Sorry this maybe off topic-- I am writing a device driver for a kind of
framebuffer device.
This is virtually complete and working, all I wish to add is
write-combining but I can find
very little information on how to do this. Looking at other device
drivers MTRR crops
up a few times but I is still not clear to me what I have to do.

So far-
I grab the memory region for the framebuffer (1/4Mb) something like so;
......

memio=ioremap(pci_resource_start(dev,MEMIO)&PCI_BASE_ADDRESS_MEM_MASK,MEMIO_SIZE);

......
then try to mtrr it
.....
err=mtrr_add(memio,MEMIO_SIZE,MTRR_TYPE_WRCOMB,1);
......
which fails because memio is not aligned correctly

my code generates the following messages
slm: init: mtrr option enabled- trying region cc960000
mtrr: base(0xcc960000) is not aligned on a size(0x40000) boundary
slm: init: mtrr: unable to set write combining for slm memory :(

Before I go any further I would like to ask is this a sensible approach
or have I missed
something somewhere?

If this is not the most sensible way please point me towards a sensible
solution-

If this is the correct way of doing things is there
> an easy way to discover the mtrr alignment requirements prior to
mtrr_add?
> Can I align memio properly (how?) or
> do I start by defining a larger mtrr region below memio and then
masking off the
unwanted regions either side of my memory region with
mtrr(...MTRR_TYPE_WRBACK..)?
> What happens on none x86 type processors?

any other advice?


Thanks SA



2002-02-12 19:35:22

by SA

[permalink] [raw]
Subject: Re: Write-combining


Have I missed something here?

Am I being dim?

Or is the usual "instant advice" feature switched off?


The device I am writing the driver for formally didn't support
write-combining and it took
10000 clock ticks to do a partial transfer- now it does support
write-combining and it still
takes 10000 clock ticks to transfer the data- It is performance
critical- How do I switch
write-combining on? It is worth at least a 2x speed up for me?

If it is something obvious please don't be afraid to point it out-----

Thanks SA