GPU Compute Software
Ask questions about Intel® Graphics Compute software technologies, such as OpenCL* GPU driver and oneAPI Level Zero
140 Discussions

IOBAR: index register works, data register not

OTS
New Contributor I
1,638 Views

Hello community,

I hope that you don't mind if I ask a rather basic question. I am still unfamiliar with graphics circuits from Intel.

 

I am trying to access the MMIO space but fail to do so.

 

First I tried to use the move instructions with the offset given in the PCI configuration space at GTTMMADR but I always read the value 0 and could not change it.

 

Then I tried to use the in and out instruction with the offset given in the PCI configuration space at IOBAR. The following 2 instructions work:

eax = in(IOBAR)

out(IOBAR, eax)

 

The following 2 instructions do not work:

eax = in(IOBAR + 4)

out(IOBAR + 4, eax)

 

So I can change the content of the address channel (index) but I cannot change the content of the data channel (register value).

 

The graphics circuit (generation 7 low cost, alias Valleyview/Bay Trail) responds to in and out on the VGA ports.

 

Does someone know what I am doing wrong?

 

Thank you very much.

 

Regards,

Gary

Labels (1)
0 Kudos
1 Solution
OTS
New Contributor I
1,588 Views

I finally figured out what the problem was.

 

I tried to access the "software flag 00"-register, because this is a register where one can write 00 00 00 00h and FF FF FF FFh without causing any damage.

 

The documentation says that this register is at the offset ("Memory Offset Address" sic!) 7 04 10h. What it doesn't say on this page, is, that this is not the offset from the beginning of the MMIO space. To get the offset from the beginning of the MMIO space one has to add 18 00 00h. So the offset of this register is 1F 04 10h.

View solution in original post

0 Kudos
3 Replies
OTS
New Contributor I
1,589 Views

I finally figured out what the problem was.

 

I tried to access the "software flag 00"-register, because this is a register where one can write 00 00 00 00h and FF FF FF FFh without causing any damage.

 

The documentation says that this register is at the offset ("Memory Offset Address" sic!) 7 04 10h. What it doesn't say on this page, is, that this is not the offset from the beginning of the MMIO space. To get the offset from the beginning of the MMIO space one has to add 18 00 00h. So the offset of this register is 1F 04 10h.

0 Kudos
AishwaryaCV_Intel
Moderator
1,570 Views

Hi,


Glad to know that your issue is resolved. Thanks for sharing the solution with us. If you need any additional information, please post a new question as this thread will no longer be monitored by Intel.


Thanks And Regards,

Aishwarya


0 Kudos
olivia32
Beginner
1,467 Views

Hi Gary,

It sounds like you're trying to access the MMIO (Memory-Mapped I/O) space on an Intel graphics circuit, but you're having trouble changing the register values. Without knowing more details about your specific setup and code, it's difficult to pinpoint the exact issue.

However, here are a few suggestions that may help:

  • Double-check that you're accessing the correct MMIO address. Make sure that you're using the correct offset value and that you're not accidentally reading/writing to a different address.

  • Ensure that you have the necessary permissions to access the MMIO space. Depending on your operating system and hardware, you may need to run your code as an administrator or have special permissions to access certain memory regions.

  • Try using a different method to access the MMIO space. Instead of using the in/out instructions, you could try using memory-mapped I/O or direct memory access (DMA) techniques to access the graphics circuit registers.

I hope this helps! If you can provide more details about your setup and code, I may be able to offer more specific advice.

Best Regards

Olivia Devid

0 Kudos
Reply