[Suzaku:01953] Re: Kernel エラー

Nobuaki Sugishima email@hidden
2010年 9月 3日 (金) 20:27:39 JST


$B9B^<MM(B

$B!!%O%s%I%i$r(B
spin_lock_irqsave(&spin_lock, slFlag);

spin_lock_irqrestore(&spin_lock, slFlag);

$B$G64$s$G$_$?$N$G$9$,!"8=>]$OJQ$o$j$^$;$s!#(B

$B$3$l$H$OJL$K(Bini_module()$B$G(B
spin_lock_init(&spin_lock);

my_open()$B$G(B

 spin_lock(&spin_lock);
 if ( access_num){
  spin_unlock(&spin_lock);
  return -EBUSY;
 }
 access_num ++;
 spin_unlock(&spin_lock);

$B$r$$$l!"$5$i$K3d$j9~$_%O%s%I%i$r(B
 spin_lock(&spin_lock);
 spin_unlock(&spin_lock);
$B$G64$s$G$b8+$?$G$9$,!"JQ$o$j$^$;$s!#(B

$B$7$+$7A4$/JQ$o$i$J$+$C$?$o$1$G$O$J$/!"A02sJs9p$7$?(BrunFlag=false$B$N$H$3$m$K%V%l!<%/%"%&%H$9$email@hidden@$N3d$j9~$_$O$J$/$J$C$?$h$&$G$9!#(B
$B$3$l$,$b$?$i$9%I%i%$%P%(%i!<$b=P$J$/$J$j$^$7$?!#(B

spin_lock$B$N5!G=$O(B__SMP__$B$,<BAu$5$l$F$$$J$$$H8z2L$,$J$$$=$&$G$9$,!"(BCPU$B$,0l$D$7$+$J$$(BSUZAKU$B$G$OI,MW$J$b$N$J$N$G$7$g$&$+!)!#(B

$B$H$K$+$/3d$j9~$_$=$N$b$N$O=jDj%/%m%C%/$r%+%&%s%H$7$F<+?H$G(BOUT$BL?Na$rH/9T!"Dd;_$9$k%a%+%K%:%`$OLdBj$J$/F0:n$7$F$*$j!"3d$j9~$_$=$N$b$N$NLdBj$G$O$J$$$3$H$OL@$i$+$G$9!#(B

$BLdBj$O$9$Y$F(B
 __raw_writel(slvReg1[i], addrAut);
$B$3$N#1%9%F%C%W$K=8Ls$5$l$^$7$?!#(B

$B$3$l$,#1!$#0#0#02s$[$I$GFMA3ITG=$K$J$k2?$i$+$NM}M3$rC5$i$J$1$l$P$J$j$^$;$s!#(B

$BJ'=P$7%/%m%C%/$O#1#0#0&L#s#e#c!"<BB,$9$k$H%/%m%C%/#I#N8e%8%C%?!<$O$"$j$^$9$,Ls#1#0&L#s#e#c$G%O!<%I$X$N=PNO$,;O$^$j!"#42s$N#S#t#r(Bobe$B$,H/9T$5$l$F$$$k;~4V$O%H!<%?%k$G#1&L#s#e#c<e!";~4VE*$K$O#C#r#i(Btical$B$G$O$"$j$^$;$s!#(B

$B$I$&$b=PNOFbMF$,JQ2=$7$?$H$3$m$G%(%i!<$,H/@8$7$F$$$k$h$&$K$b;W$($^$9$,!"FbMF$,4V0c$($F$$$F$b=PNO<+BN$,9T$o$l$J$/$J$k$3$H$O9M$($K$/$$$H$3$m$G$9!#(B

$B2?$+<(:6$,$"$j$^$7$?$i$*4j$$$7$^$9!#(B





----- Original Message ----- 
From: "mizo" <email@hidden>
To: "SUZAKU general discussion list" <email@hidden>
Sent: Friday, September 03, 2010 4:21 PM
Subject: [Suzaku:01950] Re: Kernel $B%(%i!<(B


> $B9B^<$G$9!#(B
>
> Nobuaki Sugishima wrote:
>> $B9B^<MM(B
>>
>> $B!!?WB.BP1~$"$j$,$H$&$4$6$$$^$9!#(B
>>
>> $B!!0lHL#I!?#O$K4X$7$F(Bioctl()$B$N;HMQ$,%*!<%=%I%C%/%9$G$"$k$3$H$O>5CN$7$F$$(B
>> $B$^$9!#(B
>>
>> $B!!@h$r5^$.$?$+$C$?$N$G$H$j$"$($:(Bwrite()$B$G$d$C$F$7$^$$$^$7$?!#;XE&$7$F$$(B
>> $B$?$@$$$?LdBjE@$O:Y$+$/2~NI$$$?$7$^$9!#(B
>>
>> $B!!;d$NL\2<$N4X?4;v$O3d$j9~$_$email@hidden>o$K<B9T$5$l$J$$$3$H$G$9!#(B
>>
>>    __raw_writel(slvReg1[i], addrAut);
>>
>> $B$email@hidden>o$K<B9T$5$l$J$$$H$-!"$$$+$J$k%I%i%$%P$N%"%i!<%`$bH/@8$7$^$;$s!#0l8+(B
>> $email@hidden>o$K3d$j9~$_$O=hM}$5$l$^$9!#$7$+$7$3$N(B1$B9T$K$h$C$F=PNO$5$l$k$Y$-%Q%k%9(B
>> $B$,%O!<%IB&$G4QB,$5$l$^$;$s!#(B
>
> $B3d$j9~$_$,F~$C$F$$$k$3$H$O3NG'$G$-$?$,!"(B__raw_writel()$B$,<B9T$5$l$J$$$H$$$&(B
> $BM}2r$G$h$m$7$$$G$7$g$&$+!)(B
>
>
>> FPGA$B!!#u#s#e#r!2#l#o#g#i#c!%#v#h#dCf$N(Bslv_write_ack_1$B$email@hidden>o$G$"$l$P3d$j(B
>> $B9~$_(B1$B2s$K#42sH/9T$5$l$^$9$,!"$3$l$email@hidden$l4|BT$5$l$?%Q%k%9$b=PNO$5$l$^$;(B
>> $B$s!#$"$kNc$G$O3d$j9~$_#1!$#3#0#02s$[$I$GFMA3$3$N>c32$,H/@8$7$^$9!#(B
>> $B$$$C$?$s5/$-$k$HEE8;EjCG0J30$KI|5l$NO)$O$"$j$^$;$s!#(B
>>
>> $B$H$$$&D6FqLd$G$9!#(B
>>
>> $B?dDj860x$N0l$D$O%?%$%^!<3d$j9~$_0J30$N3d$j9~$_$G$9!#(B
>>
>> $B%?%$%^!<3d$j9~$_$O#i#n#i#t!J!KCf$G!"(B
>>
>> static int __init my_init_module(void)
>> {
>> int ret;
>> u32 my_addr_isr_offset;
>>
>> pr_info(DEV_NAME" ("DEV_VER") : MY Driver of MY I/O Board\n");
>>
>> sema_init(&sem, 1);
>>
>> myAddrOrg = XPAR_MY_CNTLR_BASEADDR;
>> addOrg = (u32 *)ioremap_nocache(XPAR_MY_CNTLR_BASEADDR,
>> XPAR_MY_CNTLR_REMAP_SIZE);
>> if (addOrg == NULL) {
>>  printk(KERN_ERR "ioremap failed\n");
>>  return -EIO;
>> }
>> ret = register_chrdev(DEV_MAJOR, DEV_NAME, &my_fops);  // Driver info.
>> registered to kurnel table
>> if (ret < 0) {
>>  iounmap(addOrg);
>>  return ret;
>> }
>> addMan = (u32 *)ioremap_nocache(myAddrOrg + OFFSET_MAN, sizeof(unsigned
>> long)); // Aut Out
>> addAut = (u32 *)ioremap_nocache(myAddrOrg + OFFSET_AUT, sizeof(unsigned
>> long)); // Man Out
>> addInp = (u32 *)ioremap_nocache(myAddrOrg + OFFSET_INP, sizeof(unsigned
>> long)); // Inp
>>
>> // $B3d$j9~$email@hidden%P%C%U%!!"(BSDRAM$B$K3NJ](B         PAGESIZE=0x1000
>> pageBuf0 = (u32 *) kmalloc(sizeof(u32) * PAGESIZE, GFP_KERNEL); //
>> kmalloc$B$N>e8B!'(B128KB
>>
>> // $B3d$j9~$_MW5a$NEPO?!!!!(Btimer_interrupt : $B3d$j9~$_%O%s%I%i!!(B
>> IRQF_DISABLED : $BB?=E3d$j9~$_6X;_!)(B
>> ret = request_irq(irq_timer, timer_interrupt, IRQF_DISABLED, DEV_NAME,
>> dev_id);
>> if (ret)
>>  printk(KERN_ERR "timer_interrupt failed\n");
>>
>> // IntrStatus $B3JG<%"%I%l%9$r<hF@!'(B0xF0FFD000 + 0x00000100 + 0x00000020 =
>> 0xF0FFD00120
>> #define XPS_MY00_INTR_CNTRL_SPACE_OFFSET (0x00000100)
>> #define XPS_MY00_INTR_IPISR_OFFSET (XPS_MY00_INTR_CNTRL_SPACE_OFFSET +
>> 0x00000020)
>> my_addr_isr_offset = XPAR_MY_CNTLR_BASEADDR + XPS_MY00_INTR_IPISR_OFFSET;
>> my_addr_isr = (u32 *)ioremap_nocache(my_addr_isr_offset, sizeof(unsigned
>> long)); // Linux$B%"%I%l%9$KJQ49(B
>>
>> addMaskOffset = (u32 *)ioremap_nocache(XPAR_INTC_SYSTEM_BASEADDR +
>> XPAR_MY_CNTLR_IP2INTC_IRPT_MASK, sizeof(unsigned long));
>>
>> ptRead = 0;                // $B!!(Bread Pointer
>> ptWrite = 0;                // $BJ'$$=P$7%]%$%s%?$r=i4|2=(B
>> autoRegNo = 0;               // clockNo x 4
>> runFlag = false;              // $B%I%i%$%PB&$G(BReset$B$7$F$*$/(B
>>
>> // spin_lock_init(&sync_spinlock);
>>
>> return ret;
>> }
>>
>> $B$N$h$&$KEPO?$5$l$?(Btimer_interrupt()$B$G$9$+$i!"%?%$%^!<%/%m%C%/0J30$N(BEvent
>> $B$G$3$l$,5/F0$9$k$3$H$O9M$($K$/$/!"2>$K%H%j%,!<$,$+$+$C$F$bB?=E3d$j9~$_$O(B
>> $B6X;_!"$=$N$H$-$7$+$+$C$F$$$?3d$j9~$_=hM}$,AK32$5$l$k$3$H$O$J$$$H9M$($i$l(B
>> $B$^$9!#$=$N!I3d$j9~$_!I$O<!$N%/%m%C%/$G=hM}$5$l$k$+$b$7$l$^$;$s!#(B
>>
>> $B!!$7$+$7J'=P$7=*N;8e!"(BEthernet$B%"%/%;%9$r$9$k$H(Btimer_interrupt()$B$KF~$C$F(B
>> $B$/$k$3$H$,$"$j$^$9!#$3$N$H$-$O(BrunFlag=false$B$J$N$G(B
>>
>> timer_interrupt(int irq_timer, void *dev_id, struct pt_regs *regs)
>> {
>>
>> $B!&!&!&!&!&!&!&!&!&!&!&!&!&!&!&!&!&!&!&!&!&!&!&!&!&!&!&!&!&(B
>> if (runFlag == true){
>>
>> $B!&!&!&!&!&!&!&!&!&!&!&!&!&!&!&(B
>>    __raw_writel(slvReg1[i], addrAut);        // $BJ'=P!!%O!<%I$K=PNO(B $B-!!!IT(B
>> $B!!!!(BptWrite++;                                    // $email@hidden;;J'$$=P$7%]%$%s%?(B
>>  }
>> else if (ptWrite == regNo){
>>   cmdDev &= ~(1 << CMDBIT_AUT);
>>   __raw_writel(cmdDev, addrMan);          // $B%/%m%C%/Dd;_(BCommand
>>   ptWrite = 0;                // Pointer Clear
>>   runFlag = false;            // $B0J9_$NJ'=P$r6X;_$9$k(BFlag
>>  }
>>  else{
>> $B"M(B  cmdDev &= ~(1 << CMDBIT_AUT);
>>  __raw_writel(cmdDev, addrMan);           // $B%/%m%C%/Dd;_(BCommand
>> }
>> $B!&!&!&!&!&!&!&!&!&!&!&!&!&!&!&!&!&(B
>>
>>     return IRQ_HANDLED;
>> }
>>
>> $B0lEY(BRUN$BF0:n$r9T$o$;!"(BEthernet$B$rA`:n$9$k$H"M$N0LCV$K3d$j9~$_$,F~$C$F$/$k$3(B
>> $B$H$,$"$j$^$9!#(B
>> $BM}M3$O$o$+$j$^$;$s!#(B
>>
>> $B!!$=$3$G(Btimer_interrput()$B=hM}Cf$O$9$Y$F$N3d$j9~$_$r%^%9%/$G6X;_$7$?$$$N(B
>> $B$G$9$,!"(BPowePC$B$N3d$j9~$_%^%9%/$N%F!<%V%k$,H/8+$G$-$^$;$s!#(B
>>
>> $B!!(BENABLEMASK    : 0xb
>>  DIABKEMASK    : 0x7
>>
>> $B$H$7$F!"%?%$%^!<3d$j9~$_%/%m%C%/$r6/@)H/?6$5$;!">e5-%^%9%/$email@hidden$jBX$($k$3(B
>> $B$H$G%?%$%^!<3d$j9~$_$O(BON/OFF$B$G$-$^$9!#(B
>> $B!!$3$l$r#E#t#h#e#r#n#e#t!"#R#S#2(B32C$B3d$j9~$_$KJ,3d$7$F@)8f$7$?$$$N$G$9$,(B
>> $email@hidden$7$F$$$^$;$s!#(B
>>
>> $B%^%9%/$N%S%C%H%"%5%$%s$r$*65$(4j$($^$9$+!)(B
>
> spin_lock_irqsave()
> $B$r;H$C$F$O$$$+$,$G$7$g$&$+!)(B
>
>
>> $B!!$7$+$7(B $B#K#e#r#n#e#l$G<B9T$5$l$kC1=c$J#1L?Na(B
>>        __raw_writel(slvReg1[i], addrAut);
>> $B$,ESCf$G#F#a#i#t#a#l>c32$K$J$kM}M3$O$*$=$i$/JL$N$H$3$m$K$"$k$N$G$7$g$&!#(B
>>
>> $B!!2r7h$N%R%s%H$O$J$$$G$7$g$&$+!)!#(B
>
>


--------------------------------------------------------------------------------


> _______________________________________________
> suzaku mailing list
> email@hidden
> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/suzaku
>




suzaku メーリングリストの案内