lkml.org 
[lkml]   [1998]   [Oct]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: How to invoke burst-read on PCI mapped memory area
On Wed, 14 Oct 1998, Hiroshi Kawashima wrote:

> Many thanks for much reply!
>
> > > If I believe word of my colleague (I believe), 440BX chipset must have such
> > > capability. (To convert burst-read (aka cache line fill) on host bus
> > > to burst-read transaction on PCI)
> > > I do not have enough time to validate his word right now, but does this
> > > behavior sounds so strange ?
> >
> > not so much. I have no trouble to believe that BX's have such a cabability
> > (at last !!) but the point is that it's not a WinNT feature, but a BX one.
> Of course, I know.
> But from my understanding, Linux (at least v2.0.X) does not have such
> feature (vremap() with cache attribute control).
> I dislike Windoze, but WinNT has it.
>
> > If you could 'track' your colleague to get some information on the
> > register to tweek, you'd be useful to a lot of people.
> > In the mean time, i'll try to download BX specs from Intel site.
> > regards.
> He do not touch anything about chipset/cpu register setting.
>
> He just use following WinNT system call:
> MmMapIoSpace(
> mappedAddr, // Physical Address
> memCount[i], // Number of Bytes (Memory map size)
> cacheEnable); // CacheEnable
> Rest of jobs are done by WinNT executive.

ok. so there is nothing important. all the work is really done by BX.

> By the way, I'm porting device driver written for 2.0.X to 2.1.X to
> use __ioremap() call.

ok.

> Almost completed, other than one point.
>
> In mmap_xxxx() function, I use vma->vm_inode like this:
>
> int chigasaki_mmap(struct inode *inode, struct file *filp,
> struct vm_area_struct *vma)
> {
> ......
> vma->vm_inode = inode;
> inode->i_count++;
> }
>
> But on v2.1.X, vm_inode member is missing from struct vm_area_struct.
> Would anyone help me how should I rewrite this ?

have a look at driver/char/mem.c:

static int mmap_mem(struct file * file, struct vm_area_struct * vma)
{
unsigned long offset = vma->vm_offset;
....
if (remap_page_range(vma->vm_start, offset,
vma->vm_end-vma->vm_start,
vma->vm_page_prot))
return -EAGAIN;
vma->vm_file = file;
file->f_count++;
return 0;
}

regards.

+------------------------------------------------------------------+
|Rossetti Davide INFN - Sezione Roma I - gruppo V, prog. APEmille|
| web : http://apemaia.roma1.infn.it/~rossetti |
| """"" E-mail : davide.rossetti@roma1.infn.it |
| |o o| phone : (+39)-6-49914412 |
|--o00O-O00o-- fax : (+39)-6-4957697 |
| address: Dipartimento di Fisica (V.E.) |
| Universita' di Roma "La Sapienza" |
| P.le Aldo Moro,5 I - 00185 Roma - Italy|
| pgp pub. key: finger rossetti@apemaia.roma1.infn.it |
| |
|"Most people think about twice a year. I got famous by thinking |
| once a week." - George B. Shaw (see Appendix A) |
+------------------------------------------------------------------+


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:45    [W:0.059 / U:0.304 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site