Take the 2-minute tour ×
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems.. It's 100% free, no registration required.

I have the following output from running lspci -vv -s 00:00 on my single board computer running Linux.

07:05.0 RAID bus controller: Adaptec AAC-RAID (Rocket) (rev 03)
Subsystem: Adaptec ASR-2230S + ASR-2230SLP PCI-X (Lancer)
Control: I/O- Mem+ BusMaster+ SpecCycle+ MemWINV+ VGASnoop-
ParErr- Stepping- SERR+ FastB2B-
Status: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- SERR-
Latency: 64 (250ns min, 250ns max), Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 74
Region 0: Memory at f7a00000 (64-bit, non-prefetchable) [size=2M]
Region 2: Memory at f79ff000 (64-bit, non-prefetchable)
[Remaining output truncated]

The above is only example output and not exactly what I am getting but it contains the items of interest.

I understand most of the output from the lspci command, but I would like someone to explain to me the lines that begin with Region ... What type of memory am I looking at here specified by the Region line? How might I access it? With that asked, I am trying to accomplish communication between two single board computers connected over the PCI bus. I should be able to talk directly. All there is a PCI arbiter running the bus. This is what I've accomplished so far...

I created a Linux kernel module for outbound PCI traffic. Basically it maps all the way down from userspace (with a user space application) using the driver mmap implementation. I write to the location returned by mmap and I actually see the traffic with a bus analyzer! Now on the other single board computer I try read its sysfs resource for the PCI device but only see all FFs and no changes.

Any advice or explanation on how all of this memory mapping occurs, involving PCI, would be greatly appreciated.

share|improve this question
1  
I suspect you'd have more luck on stackoverflow. –  Stephane Chazelas Apr 5 '13 at 21:50
1  
@StephaneChazelas I will try there as well thanks! –  pragmatic-penguin Apr 5 '13 at 22:32
add comment

1 Answer

lspci show the info about your PCI devices (depending on options), you can check the man page for futher info.

Regarding the REGION header on the output, these lines details where is allocated the registers used for this component. It is related with the memory mapping and how the memory is used for each component.

Region 0: Memory at f7a00000 (64-bit, non-prefetchable) [size=2M]
Region 2: Memory at f79ff000 (64-bit, non-prefetchable)

On these lines are specified the register addresses used, the size and the address size (64 bits to point a register).

Look for futher info about computer architecture if you want to go deeper on the way this addresses are used.

Hope it helps!

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.