I guess a correct fix may be bfin_write_SWRST(_bfin_swrst & 0xfff0 & ~DOUBLE_FAULT); bfin_write_SWRST(_bfin_swrst & 0xfff0 | DOUBLE_FAULT);
Sonic -----Original Message----- From: Zhang, Sonic [mailto:[email protected]] Sent: Monday, June 15, 2009 3:24 PM To: Mike Frysinger; [email protected] Cc: [email protected] Subject: RE: [Linux-kernel-commits] [6709] trunk/arch/blackfin/kernel/setup.c: Fix bug[#5223] Get bfin_swrst value from SYSCR instead of SWRST only That's because bfin_write_SWRST(_bfin_swrst & ~DOUBLE_FAULT); bfin_write_SWRST(_bfin_swrst | DOUBLE_FAULT); cause system hang if _bfin_swrst is read from SYSCR and the boot mode is 7. Sonic -----Original Message----- From: Mike Frysinger [mailto:[email protected]] Sent: Monday, June 15, 2009 3:08 PM To: [email protected] Cc: [email protected] Subject: Re: [Linux-kernel-commits] [6709] trunk/arch/blackfin/kernel/setup.c: Fix bug[#5223] Get bfin_swrst value from SYSCR instead of SWRST only On Mon, Jun 15, 2009 at 02:50, <[email protected]> wrote: > Log Message > > Fix bug[#5223] Get bfin_swrst value from SYSCR instead of SWRST only > after double fault failure. this change is incorrect and your changelog doesnt really explain at all why reading this core mmr is a problem > Modified: trunk/arch/blackfin/kernel/setup.c (6708 => 6709) > > - /* Newer parts mirror SWRST bits in SYSCR */ > -#if defined(CONFIG_BF53x) || defined(CONFIG_BF561) || \ > - defined(CONFIG_BF538) || defined(CONFIG_BF539) > _bfin_swrst = bfin_read_SWRST(); > -#else > - _bfin_swrst = bfin_read_SYSCR(); > -#endif SWRST is read-to-clear and we specifically do not want to clear it. that is why we read SYSCR on all newer parts instead of SWRST -- so the bits remain unchanged. -mike _______________________________________________ Linux-kernel-commits mailing list [email protected] https://blackfin.uclinux.org/mailman/listinfo/linux-kernel-commits
