Alternatives to using nonpaged memory

I have a board that takes realtime data from an
outside source, and writes the data in realtime to a
scsi hard drive. The size of memory on our board is
192 mb. The normal way we do this is by allocating
nonpaged kernel memory and mapping our board’s memory
with a virtual address to the host. The problem i am
hitting is that there is a limitation of 128 mb
nonpaged kernel mode memory for nt v.4, and I was
wondering if there is a better of more efficient way
of mapping memory that doesn’t sacrifice any of the
realtime needs of avoiding data loss?
Thanx
Nachum


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com

Alternatives to using nonpaged memoryA thought - if you’re not opposed to
changing the hardware, put the hard drive on the board itself (rather than
the PC).

You could potentially design this so you can access the drive ‘through’ the
card so you could access it from the PC when when you’re not actually
storing data.

-Tim
Timothy A. Johns — xxxxx@driverdev.com
Driver Development Corporation — 800.841.0092
Bring Up Your Hardware — Fast. www.driverdev.com

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com]On Behalf Of Nachum Kanovsky
Sent: Monday, July 09, 2001 5:26 AM
To: NT Developers Interest List
Subject: [ntdev] Alternatives to using nonpaged memory

I have a board that takes realtime data from an
outside source, and writes the data in realtime to a
scsi hard drive. The size of memory on our board is
192 mb. The normal way we do this is by allocating
nonpaged kernel memory and mapping our board’s memory
with a virtual address to the host. The problem i am
hitting is that there is a limitation of 128 mb
nonpaged kernel mode memory for nt v.4, and I was
wondering if there is a better of more efficient way
of mapping memory that doesn’t sacrifice any of the
realtime needs of avoiding data loss?
Thanx
Nachum


You are currently subscribed to ntdev as: xxxxx@driverdev.com
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com

I don’t think that we want to change the hardware, b/c this is for a
client’s system, and its better if we found a more standard way of doing
this.
Is there some way of appropriating system memory without NT knowing
about it? We have 1 gb of memory on the computer itself, and all we
would like to do is have a memory buffer the same size as the board
memory (192 mb). Or is there some way of locking paged memory when the
driver starts so we can bypass the need for nonpaged kernel memory which
seems to limit itself to 128mb?
Nachum

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Timothy A. Johns
Sent: Monday, July 09, 2001 8:28 PM
To: NT Developers Interest List
Subject: [ntdev] RE: Alternatives to using nonpaged memory

A thought - if you’re not opposed to changing the hardware, put the hard
drive on the board itself (rather than the PC).

You could potentially design this so you can access the drive ‘through’
the card so you could access it from the PC when when you’re not
actually storing data.

-Tim

Timothy A. Johns — xxxxx@driverdev.com
Driver Development Corporation — 800.841.0092
Bring Up Your Hardware — Fast. www.driverdev.com

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com]On Behalf Of Nachum Kanovsky
Sent: Monday, July 09, 2001 5:26 AM
To: NT Developers Interest List
Subject: [ntdev] Alternatives to using nonpaged memory

I have a board that takes realtime data from an
outside source, and writes the data in realtime to a
scsi hard drive. The size of memory on our board is
192 mb. The normal way we do this is by allocating
nonpaged kernel memory and mapping our board’s memory
with a virtual address to the host. The problem i am
hitting is that there is a limitation of 128 mb
nonpaged kernel mode memory for nt v.4, and I was
wondering if there is a better of more efficient way
of mapping memory that doesn’t sacrifice any of the
realtime needs of avoiding data loss?
Thanx
Nachum


You are currently subscribed to ntdev as: xxxxx@driverdev.com
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com


You are currently subscribed to ntdev as: xxxxx@yahoo.com
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com

>I have a board that takes realtime data from an

outside source, and writes the data in realtime to a
scsi hard drive. The size of memory on our board is
192 mb.

Have you considered just mapping the device memory into user mode space,
and then having the disk controller bus master from your device across the
PCI bus to the disk controller, bypassing processor RAM? You just do a
WriteFile with the mapped device address. What you want is an unbuffered
transfer, so set the flags appropriately on opening the destination file.
There are also some alignment requirements.

I don’t offhand remember if this works in NT 4 (some version didn’t like
mapping bus master DMA addresses that were device target memory), but it is
one potential architecture. Worst case seem like you could have an
application copy the mapped buffer in chunks to a paged user buffer. No
buffers get allocated in kernel mode, just control synchronization and
address mapping.

There are samples in the DDK of mapping PCI target memory into user mode space.

  • Jan

You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com

Yes, (1) you can use /MAXMEM=whatever to limit the amount of RAM used by
NT and then treat the remainder as your own private ram device. (2) you
can lock down pageable memory using an MDL, but MDLs are technically
limited to ~64MB buffers. You would have to either use a set of MDLs
(annoying,) or cheat and ignore the MDL buffer size limitation. In
either case you will most likely also run into the system PTE problem,
which can be solved by adjusting some value or other in the registry.

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Nachum Kanovsky
Sent: Tuesday, July 10, 2001 3:41 AM
To: NT Developers Interest List
Subject: [ntdev] RE: Alternatives to using nonpaged memory

I don’t think that we want to change the hardware, b/c this is for a
client’s system, and its better if we found a more standard way of doing
this.
Is there some way of appropriating system memory without NT knowing
about it? We have 1 gb of memory on the computer itself, and all we
would like to do is have a memory buffer the same size as the board
memory (192 mb). Or is there some way of locking paged memory when the
driver starts so we can bypass the need for nonpaged kernel memory which
seems to limit itself to 128mb?
Nachum

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Timothy A. Johns
Sent: Monday, July 09, 2001 8:28 PM
To: NT Developers Interest List
Subject: [ntdev] RE: Alternatives to using nonpaged memory

A thought - if you’re not opposed to changing the hardware, put the hard
drive on the board itself (rather than the PC).

You could potentially design this so you can access the drive ‘through’
the card so you could access it from the PC when when you’re not
actually storing data.

-Tim

Timothy A. Johns — xxxxx@driverdev.com
Driver Development Corporation — 800.841.0092
Bring Up Your Hardware — Fast. www.driverdev.com

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com]On Behalf Of Nachum Kanovsky
Sent: Monday, July 09, 2001 5:26 AM
To: NT Developers Interest List
Subject: [ntdev] Alternatives to using nonpaged memory

I have a board that takes realtime data from an
outside source, and writes the data in realtime to a
scsi hard drive. The size of memory on our board is
192 mb. The normal way we do this is by allocating
nonpaged kernel memory and mapping our board’s memory
with a virtual address to the host. The problem i am
hitting is that there is a limitation of 128 mb
nonpaged kernel mode memory for nt v.4, and I was
wondering if there is a better of more efficient way
of mapping memory that doesn’t sacrifice any of the
realtime needs of avoiding data loss?
Thanx
Nachum


You are currently subscribed to ntdev as: xxxxx@driverdev.com
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com


You are currently subscribed to ntdev as: xxxxx@yahoo.com
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com


You are currently subscribed to ntdev as: xxxxx@hollistech.com
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com