linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
* 8xx bus monitoring
@ 2005-01-26  2:31 Robin Gilks
  2005-01-26  7:06 ` Pantelis Antoniou
  0 siblings, 1 reply; 5+ messages in thread
From: Robin Gilks @ 2005-01-26  2:31 UTC (permalink / raw)
  To: ppc embedded list

Greetings

System is a MPC859 based controller.

I'm trying to determine whether a peripheral is not responding to memory 
fetches by using the bus monitor feature on the Transfer Acknowledge 
(TA) signal. This is set to the maximum count in the Bus Monitor Timeout 
(BMT) in the System Protect Control Register (SYPCR). The monitoring is 
enabled by setting the Bus Monitor Enable (BME) bit in SYPCR as well.

I understand that I can use the Transfer Error Status Register (TESR) to 
read the fact that I have had a timeout by checking the Data Transfer 
Monitor Timeout (DTMT) bit in this register.

The problem is, how do I know any error has occured so I know to look at 
  the TESR. I can't see a way of generating an exception from this 
condition.

Any help appreciated.

-- 
Robin Gilks
Senior Design Engineer          Phone: (+64)(3) 357 1569
Tait Electronics                Fax  :  (+64)(3) 359 4632
PO Box 1645 Christchurch        Email : robin.gilks@tait.co.nz
New Zealand

=======================================================================
This email, including any attachments, is only for the intended
addressee.  It is subject to copyright, is confidential and may be
the subject of legal or other privilege, none of which is waived or
lost by reason of this transmission.
If the receiver is not the intended addressee, please accept our
apologies, notify us by return, delete all copies and perform no
other act on the email.
Unfortunately, we cannot warrant that the email has not been
 altered or corrupted during transmission.
=======================================================================

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: 8xx bus monitoring
  2005-01-26  2:31 8xx bus monitoring Robin Gilks
@ 2005-01-26  7:06 ` Pantelis Antoniou
  2005-01-30 22:15   ` Robin Gilks
  0 siblings, 1 reply; 5+ messages in thread
From: Pantelis Antoniou @ 2005-01-26  7:06 UTC (permalink / raw)
  To: robin.gilks; +Cc: ppc embedded list

Robin Gilks wrote:
> Greetings
> 
> System is a MPC859 based controller.
> 
> I'm trying to determine whether a peripheral is not responding to memory 
> fetches by using the bus monitor feature on the Transfer Acknowledge 
> (TA) signal. This is set to the maximum count in the Bus Monitor Timeout 
> (BMT) in the System Protect Control Register (SYPCR). The monitoring is 
> enabled by setting the Bus Monitor Enable (BME) bit in SYPCR as well.
> 
> I understand that I can use the Transfer Error Status Register (TESR) to 
> read the fact that I have had a timeout by checking the Data Transfer 
> Monitor Timeout (DTMT) bit in this register.
> 
> The problem is, how do I know any error has occured so I know to look at 
>  the TESR. I can't see a way of generating an exception from this 
> condition.
> 
> Any help appreciated.
> 

You get a machine check exception.

It's pretty obvious then :)

Regards

Pantelis

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: 8xx bus monitoring
  2005-01-26  7:06 ` Pantelis Antoniou
@ 2005-01-30 22:15   ` Robin Gilks
  2005-01-31  7:09     ` Pantelis Antoniou
  0 siblings, 1 reply; 5+ messages in thread
From: Robin Gilks @ 2005-01-30 22:15 UTC (permalink / raw)
  To: ppc embedded list

Pantelis Antoniou wrote:
> Robin Gilks wrote:
> 
>> Greetings
>>
>> System is a MPC859 based controller.
>>
>> I'm trying to determine whether a peripheral is not responding to 
>> memory fetches by using the bus monitor feature on the Transfer 
>> Acknowledge (TA) signal. This is set to the maximum count in the Bus 
>> Monitor Timeout (BMT) in the System Protect Control Register (SYPCR). 
>> The monitoring is enabled by setting the Bus Monitor Enable (BME) bit 
>> in SYPCR as well.
>>
>> I understand that I can use the Transfer Error Status Register (TESR) 
>> to read the fact that I have had a timeout by checking the Data 
>> Transfer Monitor Timeout (DTMT) bit in this register.
>>
>> The problem is, how do I know any error has occured so I know to look 
>> at  the TESR. I can't see a way of generating an exception from this 
>> condition.
>>
>> Any help appreciated.
>>
> 
> You get a machine check exception.
> 
> It's pretty obvious then :)
> 

Using a 2.4.22 based kernel, as far as I can see a machine check should 
be trapped (its only allowed to cause a reset in the reboot code I 
think). Assuming I got it right and it really is trapped, how come I 
always get a reset:-((

Any pointers to the code that does setup for causing an exception 
(rather than reset) would be appreciated.

-- 
Robin Gilks
Senior Design Engineer          Phone: (+64)(3) 357 1569
Tait Electronics                Fax  :  (+64)(3) 359 4632
PO Box 1645 Christchurch        Email : robin.gilks@tait.co.nz
New Zealand

=======================================================================
This email, including any attachments, is only for the intended
addressee.  It is subject to copyright, is confidential and may be
the subject of legal or other privilege, none of which is waived or
lost by reason of this transmission.
If the receiver is not the intended addressee, please accept our
apologies, notify us by return, delete all copies and perform no
other act on the email.
Unfortunately, we cannot warrant that the email has not been
 altered or corrupted during transmission.
=======================================================================

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: 8xx bus monitoring
  2005-01-30 22:15   ` Robin Gilks
@ 2005-01-31  7:09     ` Pantelis Antoniou
  2005-01-31 21:49       ` Robin Gilks
  0 siblings, 1 reply; 5+ messages in thread
From: Pantelis Antoniou @ 2005-01-31  7:09 UTC (permalink / raw)
  To: robin.gilks; +Cc: ppc embedded list

Robin Gilks wrote:
> Pantelis Antoniou wrote:
> 
>> Robin Gilks wrote:
>>
>>> Greetings
>>>
>>> System is a MPC859 based controller.
>>>
>>> I'm trying to determine whether a peripheral is not responding to 
>>> memory fetches by using the bus monitor feature on the Transfer 
>>> Acknowledge (TA) signal. This is set to the maximum count in the Bus 
>>> Monitor Timeout (BMT) in the System Protect Control Register (SYPCR). 
>>> The monitoring is enabled by setting the Bus Monitor Enable (BME) bit 
>>> in SYPCR as well.
>>>
>>> I understand that I can use the Transfer Error Status Register (TESR) 
>>> to read the fact that I have had a timeout by checking the Data 
>>> Transfer Monitor Timeout (DTMT) bit in this register.
>>>
>>> The problem is, how do I know any error has occured so I know to look 
>>> at  the TESR. I can't see a way of generating an exception from this 
>>> condition.
>>>
>>> Any help appreciated.
>>>
>>
>> You get a machine check exception.
>>
>> It's pretty obvious then :)
>>
> 
> Using a 2.4.22 based kernel, as far as I can see a machine check should 
> be trapped (its only allowed to cause a reset in the reboot code I 
> think). Assuming I got it right and it really is trapped, how come I 
> always get a reset:-((
> 
> Any pointers to the code that does setup for causing an exception 
> (rather than reset) would be appreciated.
> 

Check the MSR register at the time of the access.
Is RI set? If not instead of an exception you get a reset...

Regards

Pantelis

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: 8xx bus monitoring
  2005-01-31  7:09     ` Pantelis Antoniou
@ 2005-01-31 21:49       ` Robin Gilks
  0 siblings, 0 replies; 5+ messages in thread
From: Robin Gilks @ 2005-01-31 21:49 UTC (permalink / raw)
  To: Pantelis Antoniou; +Cc: ppc embedded list

Pantelis Antoniou wrote:
>>>
>>> You get a machine check exception.
>>>
>>> It's pretty obvious then :)
>>>
>>
>> Using a 2.4.22 based kernel, as far as I can see a machine check 
>> should be trapped (its only allowed to cause a reset in the reboot 
>> code I think). Assuming I got it right and it really is trapped, how 
>> come I always get a reset:-((
>>
>> Any pointers to the code that does setup for causing an exception 
>> (rather than reset) would be appreciated.
>>
> 
> Check the MSR register at the time of the access.
> Is RI set? If not instead of an exception you get a reset...

I don't understand this - the whole point is that an exception occurs 
asynchronously and therefore I don't know where the access it, except of 
course I don't get an exception!!!

Where (insert name of source file in kernel tree) is RI set in MSR (or 
should be set but is missing from the kernel I'm using) so as to ensure 
that an exception occurs and how does the kernel distinguish a bus 
monitor timeout from other causes.

If the kernel (or the MPC8xx) is not capable of this then I guess I'll 
just have to fix the hardware :-((


-- 
Robin Gilks
Senior Design Engineer          Phone: (+64)(3) 357 1569
Tait Electronics                Fax  :  (+64)(3) 359 4632
PO Box 1645 Christchurch        Email : robin.gilks@tait.co.nz
New Zealand

=======================================================================
This email, including any attachments, is only for the intended
addressee.  It is subject to copyright, is confidential and may be
the subject of legal or other privilege, none of which is waived or
lost by reason of this transmission.
If the receiver is not the intended addressee, please accept our
apologies, notify us by return, delete all copies and perform no
other act on the email.
Unfortunately, we cannot warrant that the email has not been
 altered or corrupted during transmission.
=======================================================================

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2005-01-31 21:49 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-01-26  2:31 8xx bus monitoring Robin Gilks
2005-01-26  7:06 ` Pantelis Antoniou
2005-01-30 22:15   ` Robin Gilks
2005-01-31  7:09     ` Pantelis Antoniou
2005-01-31 21:49       ` Robin Gilks

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).