PCI address mapping question

what is difference betweeen IO mapping and memory mapping in the PCI drivers.
and why when using IO mapping there is always conflicts with other hardware in this IO range.

thanks in advance

Hesham


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

They are two separate address spaces for accessing PCI device
memory/registers. IO space is accessed on x86 systems through CPU IN or OUT
operations and is generally limited to a single 64K region for all devices
using this address space. Memory address space is accessed on an x86 system
through the ‘natural’ memory read write operations and is limited in size by
the lesser of the peripheral bus or host processor address decode
capability. For PCI this is either 32 or 64 bits, for x86 this is either 32
or 36 bits.

The obvious answer to why you see resource conflicts in IO space is that IO
space is very small and consequently conflicts are much more likely. To make
matters worse, legacy (ISA) platform architectures ‘shadows’ IO addresses in
0x400 increments, cutting the available address space down by a considerable
amount, especially as legacy platform designs allocate many of these IO
address locations.

If your PCI hardware can select either memory or IO address locations (as in
BAR0 for memory BAR1 for IO) you should prefer the memory locations over the
IO locations.

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of hesham
Sent: Friday, August 10, 2001 1:07 PM
To: NT Developers Interest List
Subject: [ntdev] PCI address mapping question

what is difference betweeen IO mapping and memory mapping in the PCI
drivers.
and why when using IO mapping there is always conflicts with other hardware
in this IO range.

thanks in advance

Hesham

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

Actually, some chips map their I/O space on memory space as well. For
example, many video chips map the VGA 3xx space both in I/O and in memory
space; while using I/O is compatible with the old standard, accessing
through memory space is more comfortable, and faster. On the other hand, you
may be able to play games with the I/O map in the TSS that are harder to
implement through the memory space. Also, watch out for byte accesses to
memory mapped i/o registers, they generate pipeline hazards and slow your
CPU down.

Alberto.

-----Original Message-----
From: Roddy, Mark [mailto:xxxxx@stratus.com]
Sent: Monday, August 13, 2001 1:29 PM
To: NT Developers Interest List
Subject: [ntdev] RE: PCI address mapping question

They are two separate address spaces for accessing PCI device
memory/registers. IO space is accessed on x86 systems through CPU IN or OUT
operations and is generally limited to a single 64K region for all devices
using this address space. Memory address space is accessed on an x86 system
through the ‘natural’ memory read write operations and is limited in size by
the lesser of the peripheral bus or host processor address decode
capability. For PCI this is either 32 or 64 bits, for x86 this is either 32
or 36 bits.

The obvious answer to why you see resource conflicts in IO space is that IO
space is very small and consequently conflicts are much more likely. To make
matters worse, legacy (ISA) platform architectures ‘shadows’ IO addresses in
0x400 increments, cutting the available address space down by a considerable
amount, especially as legacy platform designs allocate many of these IO
address locations.

If your PCI hardware can select either memory or IO address locations (as in
BAR0 for memory BAR1 for IO) you should prefer the memory locations over the
IO locations.

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of hesham
Sent: Friday, August 10, 2001 1:07 PM
To: NT Developers Interest List
Subject: [ntdev] PCI address mapping question

what is difference betweeen IO mapping and memory mapping in the PCI
drivers.
and why when using IO mapping there is always conflicts with other hardware
in this IO range.

thanks in advance

Hesham

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: xxxxx@compuware.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

Messagethats it
actually my PCI device try to allocate 64 Bytes and 1K Bytes IO spaces.

the second IO space always conflict with the IDE io space in the mother board.

I want to ask what is meant by aliasinng
and what is the mean of PCI bus holder

thanks in advance

Hesham
----- Original Message -----
From: Roddy, Mark
To: NT Developers Interest List
Sent: Monday, August 13, 2001 11:28 AM
Subject: [ntdev] RE: PCI address mapping question

They are two separate address spaces for accessing PCI device memory/registers. IO space is accessed on x86 systems through CPU IN or OUT operations and is generally limited to a single 64K region for all devices using this address space. Memory address space is accessed on an x86 system through the ‘natural’ memory read write operations and is limited in size by the lesser of the peripheral bus or host processor address decode capability. For PCI this is either 32 or 64 bits, for x86 this is either 32 or 36 bits.

The obvious answer to why you see resource conflicts in IO space is that IO space is very small and consequently conflicts are much more likely. To make matters worse, legacy (ISA) platform architectures ‘shadows’ IO addresses in 0x400 increments, cutting the available address space down by a considerable amount, especially as legacy platform designs allocate many of these IO address locations.

If your PCI hardware can select either memory or IO address locations (as in BAR0 for memory BAR1 for IO) you should prefer the memory locations over the IO locations.
-----Original Message-----
From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com] On Behalf Of hesham
Sent: Friday, August 10, 2001 1:07 PM
To: NT Developers Interest List
Subject: [ntdev] PCI address mapping question

what is difference betweeen IO mapping and memory mapping in the PCI drivers.
and why when using IO mapping there is always conflicts with other hardware in this IO range.

thanks in advance

Hesham

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: 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