All of lore.kernel.org
 help / color / mirror / Atom feed
* [parisc-linux] mem_pdc_call: how using it exactly.
@ 2002-07-05 10:53 Bruno Vidal
  2002-07-05 11:45 ` Matthew Wilcox
  0 siblings, 1 reply; 5+ messages in thread
From: Bruno Vidal @ 2002-07-05 10:53 UTC (permalink / raw)
  To: parisc-linux@lists.parisc-linux.org

[-- Attachment #1: Type: text/plain, Size: 1067 bytes --]

	Hi
I'm fighting with pdc calls since two weeks now. And I think I've nearly succeded to understand how it works. But now I have a problem. I've retrieve the modules hpa, so before using it, I need to
retrieve the spa and io_entry code in order to use it. For doing it I've wrote this, it is nearly the same thing than the function pdc_iodc_read():


static unsigned long pdc_result[32] __attribute__ ((aligned (8)));
static unsigned long pdc_result2[32] __attribute__ ((aligned (8)));

/* Get spa for this module */
hpa=dump_parms->hpa;
index=0;
iodc_data_size=32;

ret = mem_pdc_call(PDC_IODC, PDC_IODC_READ, __pa(pdc_result), hpa, index, __pa(pdc_result2), iodc_data_size);
convert_to_wide(pdc_result);
bytecnt = pdc_result[0];
memcpy(dump_iodc_data, pdc_result2, iodc_data_size);

The result is always "ret = -3" -> cannot complete call without error.
Do I forget anything (probably). Do I have to prevent interruption ? Do I have to modify PSW ?

	thanks.
 
-- 
	Vidal Bruno, (770-4271)
        SSD-HA Team, HP-UX & LINUX Support
	bruno_vidal@admin.france.hp.com

[-- Attachment #2: Card for Bruno Vidal --]
[-- Type: text/x-vcard, Size: 386 bytes --]

begin:vcard 
n:Bruno;VIDAL
tel;fax:01-69-82-60-14
tel;work:01-69-29-42-71
x-mozilla-html:TRUE
url:www.france.hp.com
org:Solution Center
version:2.1
email;internet:bruno_vidal@hp.com
title:Expert Logiciel Environnement Haute Disponibilité
adr;quoted-printable:;;HP France=0D=0A;Z.A de Courtaboeuf;1 Av. du Canada;91947 Les Ulis cedex;France
x-mozilla-cpt:;26208
fn:VIDAL Bruno
end:vcard

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

* Re: [parisc-linux] mem_pdc_call: how using it exactly.
  2002-07-05 10:53 [parisc-linux] mem_pdc_call: how using it exactly Bruno Vidal
@ 2002-07-05 11:45 ` Matthew Wilcox
  2002-07-05 12:03   ` Bruno Vidal
  0 siblings, 1 reply; 5+ messages in thread
From: Matthew Wilcox @ 2002-07-05 11:45 UTC (permalink / raw)
  To: Bruno Vidal; +Cc: parisc-linux@lists.parisc-linux.org

On Fri, Jul 05, 2002 at 12:53:31PM +0200, Bruno Vidal wrote:
> static unsigned long pdc_result[32] __attribute__ ((aligned (8)));
> static unsigned long pdc_result2[32] __attribute__ ((aligned (8)));
> 
> /* Get spa for this module */
> hpa=dump_parms->hpa;
> index=0;
> iodc_data_size=32;
> 
> ret = mem_pdc_call(PDC_IODC, PDC_IODC_READ, __pa(pdc_result), hpa, index, __pa(pdc_result2), iodc_data_size);
> convert_to_wide(pdc_result);
> bytecnt = pdc_result[0];
> memcpy(dump_iodc_data, pdc_result2, iodc_data_size);
> 
> The result is always "ret = -3" -> cannot complete call without error.
> Do I forget anything (probably). Do I have to prevent interruption ? Do I have to modify PSW ?

more prosaically, i think iodc_data_size should be 32 * sizeof(long),
ie size in bytes, not number of longs.

but why code this up yourself rather than use pdc_iodc_read?

-- 
Revolutions do not require corporate support.

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

* Re: [parisc-linux] mem_pdc_call: how using it exactly.
  2002-07-05 11:45 ` Matthew Wilcox
@ 2002-07-05 12:03   ` Bruno Vidal
  2002-07-05 15:32     ` Bruno Vidal
  2002-07-05 17:17     ` Grant Grundler
  0 siblings, 2 replies; 5+ messages in thread
From: Bruno Vidal @ 2002-07-05 12:03 UTC (permalink / raw)
  Cc: parisc-linux@lists.parisc-linux.org

[-- Attachment #1: Type: text/plain, Size: 1546 bytes --]

About the iodc_data_size, in the documentation it is describe as: "count bytes in length".
For example in drivers/scsi/zalon7xx.c:
status = pdc_iodc_read(&pdc_result, hpa, 0, &iodc_data, 32 ); 
-> it is 32.
So If I want the 32 first bytes, it should be 32.
Now why doing it myself, because I don't want to use spinlock while dumping, and pdc_iodc_read
use spinlock. Perhaps, it is not a good solution, what do you think about using spinlock while
dumping ?

Matthew Wilcox wrote:
> 
> On Fri, Jul 05, 2002 at 12:53:31PM +0200, Bruno Vidal wrote:
> > static unsigned long pdc_result[32] __attribute__ ((aligned (8)));
> > static unsigned long pdc_result2[32] __attribute__ ((aligned (8)));
> >
> > /* Get spa for this module */
> > hpa=dump_parms->hpa;
> > index=0;
> > iodc_data_size=32;
> >
> > ret = mem_pdc_call(PDC_IODC, PDC_IODC_READ, __pa(pdc_result), hpa, index, __pa(pdc_result2), iodc_data_size);
> > convert_to_wide(pdc_result);
> > bytecnt = pdc_result[0];
> > memcpy(dump_iodc_data, pdc_result2, iodc_data_size);
> >
> > The result is always "ret = -3" -> cannot complete call without error.
> > Do I forget anything (probably). Do I have to prevent interruption ? Do I have to modify PSW ?
> 
> more prosaically, i think iodc_data_size should be 32 * sizeof(long),
> ie size in bytes, not number of longs.
> 
> but why code this up yourself rather than use pdc_iodc_read?
> 
> --
> Revolutions do not require corporate support.

-- 
	Vidal Bruno, (770-4271)
        SSD-HA Team, HP-UX & LINUX Support
	bruno_vidal@admin.france.hp.com

[-- Attachment #2: Card for Bruno Vidal --]
[-- Type: text/x-vcard, Size: 386 bytes --]

begin:vcard 
n:Bruno;VIDAL
tel;fax:01-69-82-60-14
tel;work:01-69-29-42-71
x-mozilla-html:TRUE
url:www.france.hp.com
org:Solution Center
version:2.1
email;internet:bruno_vidal@hp.com
title:Expert Logiciel Environnement Haute Disponibilité
adr;quoted-printable:;;HP France=0D=0A;Z.A de Courtaboeuf;1 Av. du Canada;91947 Les Ulis cedex;France
x-mozilla-cpt:;26208
fn:VIDAL Bruno
end:vcard

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

* Re: [parisc-linux] mem_pdc_call: how using it exactly.
  2002-07-05 12:03   ` Bruno Vidal
@ 2002-07-05 15:32     ` Bruno Vidal
  2002-07-05 17:17     ` Grant Grundler
  1 sibling, 0 replies; 5+ messages in thread
From: Bruno Vidal @ 2002-07-05 15:32 UTC (permalink / raw)
  To: parisc-linux@lists.parisc-linux.org

[-- Attachment #1: Type: text/plain, Size: 293 bytes --]

	Hi
I've just read that PDC call need some specific PSW state.
But I didnt' find any function to manipulate PSW (easely).
Does exit any function to change some bits in the PSW ?

	Thanks.

-- 
	Vidal Bruno, (770-4271)
        SSD-HA Team, HP-UX & LINUX Support
	bruno_vidal@admin.france.hp.com

[-- Attachment #2: Card for Bruno Vidal --]
[-- Type: text/x-vcard, Size: 386 bytes --]

begin:vcard 
n:Bruno;VIDAL
tel;fax:01-69-82-60-14
tel;work:01-69-29-42-71
x-mozilla-html:TRUE
url:www.france.hp.com
org:Solution Center
version:2.1
email;internet:bruno_vidal@hp.com
title:Expert Logiciel Environnement Haute Disponibilité
adr;quoted-printable:;;HP France=0D=0A;Z.A de Courtaboeuf;1 Av. du Canada;91947 Les Ulis cedex;France
x-mozilla-cpt:;26208
fn:VIDAL Bruno
end:vcard

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

* Re: [parisc-linux] mem_pdc_call: how using it exactly.
  2002-07-05 12:03   ` Bruno Vidal
  2002-07-05 15:32     ` Bruno Vidal
@ 2002-07-05 17:17     ` Grant Grundler
  1 sibling, 0 replies; 5+ messages in thread
From: Grant Grundler @ 2002-07-05 17:17 UTC (permalink / raw)
  To: Bruno Vidal; +Cc: parisc-linux@lists.parisc-linux.org

Bruno Vidal wrote:
> About the iodc_data_size, in the documentation it is describe as: "count byte
>   s in length".

Yes.  Gecko ERS says ARG6 is "size of memaddr in bytes".

> For example in drivers/scsi/zalon7xx.c:
> status = pdc_iodc_read(&pdc_result, hpa, 0, &iodc_data, 32 ); 
> -> it is 32.
> So If I want the 32 first bytes, it should be 32.

        status = pdc_iodc_read(&pdc_result, hpa, 0, &iodc_data, 32 );
	if (status == PDC_RET_OK) {
		clock = (int) pdc_result[16];
	} else {
	....

This looks wrong.  pdc_result[16] probably contains garbage.

> Now why doing it myself, because I don't want to use spinlock while
> dumping, and pdc_iodc_read use spinlock. Perhaps, it is not a good
> solution, what do you think about using spinlock while dumping ?

I would rather see the dump code avoid the spinlock and
replicate the pdc calls. ie assume PDC calls can crash the
system too. But if this is a PITA, re-initialize the lock and use the
regular calls.

grant

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

end of thread, other threads:[~2002-07-05 17:17 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2002-07-05 10:53 [parisc-linux] mem_pdc_call: how using it exactly Bruno Vidal
2002-07-05 11:45 ` Matthew Wilcox
2002-07-05 12:03   ` Bruno Vidal
2002-07-05 15:32     ` Bruno Vidal
2002-07-05 17:17     ` Grant Grundler

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.