[Suzaku:01950] Re: Kernel エラー

mizo email@hidden
2010年 9月 3日 (金) 16:21:43 JST


$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 メーリングリストの案内