Re: PCI bus-mastering question

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Guennadi Liakhovetski,

On Friday 30 January 2004 21:44, Guennadi Liakhovetski wrote:
> Hello
>
> While working on an embedded board design, we came across the following
> question:
>
> Let's say, we have a CPU, RAM and a PCI-bridge on the local bus. On the
> PCI-bus we have a bus-master capable device. Let's say, that device drives
> a long burst-transfer. The PCI-bus is fully loaded, but, since the local
> bus is much (about 3 times in our case) faster, than the PCI-bus, there
> are windows, where CPU gets access to the local bus. Then, during one of
> such windows the CPU tries to read a couple of registers from PCI. Now
> come our assumptions:
> 1) because the PCI-bus is busy, the CPU doesn't come through to read those
> registers, so, it is put in the wait state, right?
> 2) in principle it would be a dead-lock - CPU waits for PCI, but the
> current PCI-master has come to a point of requesting the local bus, which
> is used by the CPU, so, it doesn't get a grant...
> 3) A possible solution would be, that the PCI bridge notices, that it
> doesn't get the local bus, and aborts the burst-transfer.
>

Just a guess...

The "bus arbiter" in the PCI bridge must/may have a mechanism 
based on "device priority" and may have some built-in algorithms
(wild guess but possible) to avoid such deadlocks.

> Is it really resolved that way, or somehow otherwise, or not resolved at
> all?:-))
>
> Thanks
> Guennadi
> ---------------------------------
> Guennadi Liakhovetski, Ph.D.
> DSA Daten- und Systemtechnik GmbH
> Pascalstr. 28
> D-52076 Aachen
> Germany

Regards,
Shine Mohamed

--
Kernelnewbies: Help each other learn about the Linux kernel.
Archive:       http://mail.nl.linux.org/kernelnewbies/
FAQ:           http://kernelnewbies.org/faq/


[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux