* [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.