Locale Icon
English
  • Forums

    Popular Forums

    • LTspice
    • Video
    • Power Management
    • RF & Microwave
    • Precision ADCs
    • FPGA Reference Designs

    Product Forums

    • Amplifiers
    • Clocks & Timers
    • Data Converters
    • Direct Digital Synthesis (DDS)
    • Energy
    • Interface and Isolation
    • MEMS Inertial Sensors
    • Power Management
    • Processors & DSP
    • Processors & Microcontrollers
    • Switches & Multiplexers
    • Sensors
    • Voltage References
    View All

    Application Forums

    • A2B Audio Bus
    • Audio
    • Automated Test Equipment (ATE)
    • Condition-Based Monitoring
    • Depth, Perception & Ranging Technologies
    • Embedded Vision Sensing Library
    • Motor Control Hardware Platforms
    • Precision Technology Signal Chains Library
    • Video
    • Wireless Sensor Networks Reference Library

    Design Center Forums

    • ACE Evaluation Software
    • ADEF System Platforms
    • Design Tools & Calculators
    • FPGA Reference Designs
    • Linux Software Drivers
    • Microcontroller no-OS Drivers
    • Precision Studio
    • Power Studio Designer
    • Power Studio Planner
    • Reference Designs
    • Robot Operating System (ROS) SDK
    • Signal Chain Designer
    • Software Interface Tools
  • Learn

    Highlighted Webinar

    COTS SoMs & Phased Array Solutions for Rapid RF Subsystem Integration

    Accelerate RF Subsystem Integration with COTS SoMs and Phased Array Solutions. As building a subsystem from early prototype to full deployment is never...

    Places

    • ADI Academy
    • ADI Webinars
    • EZ Blogs
    • Video Annex
    • Virtual Classroom

    Libraries

    • 3D ToF Depth Sensing Library
    • Continuous-Wave CMOS Time of Flight (TOF) Library
    • Embedded Vision Sensing Library
    • Gigabit Multimedia Serial Link (GMSL) Library
    • Optical Sensing Library
    • Other Products Library
    • Precision Technology Signal Chains Library
    • Software Modules and SDKs Library
    • Supervisory Circuits Library
    • Wireless Sensor Networks Library

    Upcoming Learning & Events

    • Humanoid Robotics: Deterministic Motion Control & Edge AI Systems
    • Power Integrity for High Performance Measurement Systems
    • Open RAN 5G Radio Design: SDR SoCs for Energy-Efficient, Secure Deployments
    View All Webinars
  • Community Hub

    Challenge Yourself!

      KCC's Quiz AQQ300 about Divisibility by 6

      1. Quote of the month: " Friendship is like money - easier made than kept " - Samuel Butler 2. New quiz AQQ300 about a divisibility by 6 puzzle ...

    View All

    What's Brewing

      Read a Blog, Take this Quiz for Another Chance to Win a Gift Card!

      Important: Read the blog first . The quiz questions are all based on the content of the blog: Taming the AI Power Storm: Part 2 of 3 Test your...

    View All

    Places

    • Community Help
    • Analog Dialogue Quiz
    • Logic Lounge
    • Super User Program

    Resources

    • EZ Code of Conduct
    • EZ How To Help Articles
    • Getting Started Guide
    • ADI: Words Matter
    • Community Help Videos
    View All
  • ContentZone

    Visit ContentZone

    Search content by industry or technology.
    • Blogs
    • Technical Articles
    • Tutorials
    • Videos
    • Webinars
    Your ADI content all in one place.
    View ContentZone

    The Latest Read

    JESD204 Bring-Up: From Link-Up to Data Integrity

    This blog presents a structured bring-up methodology for the ZCU102 + ADRV9009 platform, stepping through each initialization phase in sequence and identifying...

    New Release

    Signal Chain Designer: DC Error Simulation
    Signal Chain Designer: DC Error Simulation

    This video covers the DC error calculation capabilities of Signal Chain Designer. DC error is unique in that often requires calibration and has so many...

    Recent Technical Insights

    Latest Technical Article from Analog.com
    Phase Sync in Digital Phased Arrays Through Direct RF SamplingPart 2: Achieving Phase Repeatability

    This article discusses a methodology to synchronize multiple modular circuit boards, equipped with high speed data converters, to build a concept of a...

EngineerZone
EngineerZone
Linux Bug Archive
  • Log In
  • User
  • Site
  • Search
OR
Ask a Question
Linux Bug Archive
  • Processors & DSP
  • Software & Development Tools
  • Linux Distribution for Blackfin
  • Linux Bug Archive
  • Cancel
Linux Bug Archive
Documents [#5662] Uncached DMA region no longer being uncached
  • Q&A
  • Documents
  • Members
  • Tags
  • Cancel
  • +Documents
  • +ad1836: FAQ
  • +ad1938: FAQ
  • +ad1939: FAQ
  • +AD5280: FAQ
  • +ad73311: FAQ
  • +adau1361: FAQ
  • +adau1371: FAQ
  • +adau1373: FAQ
  • +adau1761: FAQ
  • +adp5588-gpio: FAQ
  • +adv7393: FAQ
  • +ADXL34x: FAQ
  • +bf518-ezbrd: FAQ
  • +bf518: FAQ
  • +bf51x: FAQ
  • +bf526-ezbrd: FAQ
  • +bf527-ezkit: FAQ
  • +bf533-stamp/ezkit: FAQ
  • +bf533: FAQ
  • +bf538-ezkit: FAQ
  • +bf548-ezkit: FAQ
  • +BF54x: FAQ
  • +bf561-ezkit: FAQ
  • +bf5xx: FAQ
  • +bfin-mac driver: FAQ
  • +bfin-uclinux-gdb: FAQ
  • +bfin_can.c: FAQ
  • +Blackfin: FAQ
  • +bluetooth: FAQ
  • -Build kernel: FAQ
    • [#7134] DSA driver breaks in bf518 in trunk(2012)
    • [#5351] Wake up from mem in bf548-ezkit, audio apps fail to work
    • [#3831] build bfin_pflags.c fails
    • [#3832] kernel build with Debug option enabled fails to boot up
    • [#3987] trunk kernel build fails at ide-blackfin.c
    • [#3990] Build kernel fails at config strace in latest trunk
    • [#4190] Build kernel failed in trunk at irqchip.c on all platform
    • [#4414] kernel build with config kernel debugging with remote gdb fails on trunk
    • [#4461] Building kernel failed at smbmount.c
    • [#4468] Build kernel failed when SND_BF5XX_I2S and SND_BF5XX_AC97 are enabled as built-in mode
    • [#4474] trunk head kernel build fails at busybox
    • [#4551] kernel build with write back policy fails to be booted up now
    • [#4963] trunk head kernel build fails at user/dosfstools
    • [#5113] build kernel fails at drivers/serial/bfin_5xx.c for bf561-ezkit
    • [#5114] build kernel fails at setup.c for bf537-stamp
    • [#5132] Build default bf538-ezkit kernel fails in trunk
    • [#5662] Uncached DMA region no longer being uncached
    • [#5943] Build latest kernel will fail after make clean
    • [#6040] Build kernel with usbotg failed(2010)
    • [#6072] error: ‘BTN_TOOL_QUADTAP’ undeclared while compiling the Kernel(2010)
    • [#6150] Build usbotg kernel fail in latest trunk(2010)
    • [#6947] build kdb kernel fails on trunk at kgdboe.c(2012)
    • [#7003] kernel fail to build in latest trunk(2012)
    • [#7086] build kernel with mcapi config fails on trunk(2012)
    • [#7514] Kernel wont compile
  • +Build: FAQ
  • +cfcard test: FAQ
  • [#6170] section mismatches in cifs code(2010)
  • [#6173] linphone testing problem(2010)
  • [#6190] BF561-EZKIT SMP kernel can not wake up by uart(2010)
  • [#6194] libxenomai.so.0 can't be found in xenomai kernel with fdpic mode(2010)
  • [#6207] Build error in CTS/RTS testing on board BF548-EZKIT(2010)
  • [#6251] pread/pwrite arent decoded correctly by strace(2010)
  • [#6253] strace build failed in trunk with outdated toolchain (missing asm/cachectl.h)(2010)
  • [#6255] Busybox inetd crashes/rsh noconnet/ssh(2010)
  • [#6265] libpng build fails due to not finding zlib(2010)
  • [#6271] "nand unlock" is an unsupported command in u-boot update in nand flash(2010)
  • [#6272] After update u-boot in spi flash, BF548-EZKIT can not boot from spi flash(2010)
  • +gadget fs bulk: FAQ
  • +gadget zero bulk: FAQ
  • +gadget zero control: FAQ
  • +Kernel xip: FAQ
  • +ltp test: FAQ
  • +microwin test: FAQ
  • +MPU kernel: FAQ
  • +Sl811-hcd.c USB: FAQ
  • +SPORT channel: FAQ
  • +trunk head kernel: FAQ
  • +usb otg driver: FAQ
  • +zlib: FAQ
  • +Illegal i2c: FAQ
  • +isp1362-hcd: FAQ
  • +Kernel: FAQ
  • +KGDBOE: FAQ
  • [#4646] Varittronix LCD driver mixes blue and Red
  • +serial driver: FAQ
  • +sigma firmware: FAQ
  • +spi transaction: FAQ
  • +strace FAQ
  • [#4787] [ltp] LTP test case shmctl01 failed in trunk for ltp-full-20081130
  • +tiff-4.0.0beta4: FAQ
  • [#5264] ping packet size test will fail for gadget ethernet test with DMA mode
  • +USBHOST: FAQ
  • +USB_EP_NI7_RXINTERVAL: FAQ
  • [#5257] Build usb gadget driver with DMA mode will fail
  • [#4708] Blackfin irda build fails for bf533-stamp
  • [#4735] unaligned accesses in qt webkit
  • [#5168] build cpufrequtils into fdpic format has error
  • [#5321] modprobe i2c lcd on bf533 stamp wait long time
  • [#4922] unwanted sound comes up after g_audio module is installed on BF548 and BF527
  • [#5176] app cpufrequtils in Blackfin app programs fails to build in FDPIC
  • [#5237] musb driver is broken after linux-2.6.30 update
  • [#5255] ping target board sometimes get wrong data byte for gadget ethernet pio mode
  • [#5336] canbus and ppifcd drivers can not be built on BF538-EZKIT
  • [#6614] Kernel panic frequently when test sdio mmc on bf518-ezbrd(2011)
  • +SPI driver: FAQ
  • [#4714] the first time to build mtd-utils will fail in trunk
  • [#5524] drivers/video/bfin_adv7393fb.c build fails in 2.6.31 due to old i2c usage
  • [#5525] drivers/video/bf537-lq035.c build fails in 2.6.31 due to old i2c usage
  • [#5399] no sound when record in board and listen in PC for linphone test of ad1836 on bf533-stamp
  • [#5458] Drivers Serial:bfin_5xx:ttyBFx fails to generate resume from standby
  • [#4647] build samba fails on trunk now for redefinition in fcntl.h
  • [#5526] ip0x board has broken UART defines after resource reorganization
  • [#5527] drivers/media/video/blackfin/blackfin_cam.c build fails in 2.6.31 due to old i2c usage
  • [#5352] bfin_sport.c setup 2D DMA
  • [#5528] fs/binfmt_elf_fdpic.c build fails when CONFIG_ELF_CORE is enabled in 2.6.31
  • [#5464] isram_write() seems to be busted
  • [#5376] mmap05 sometimes can not pass when MPU
  • [#5534] run aplay/arecord will make system panic after kernel upgraded to 2.6.31
  • [#5361] Microwin (nanox) failed on trunk using AD7897 touch screen
  • [#5544] Sport uart TX stop waiting loop is too long to block RX interrupt in PIO mode when do duplex communication
  • [#5363] spi mmc is not supported in bf533-stamp
  • [#5550] fail to flash ubifs.img to nand
  • [#5470] build xenomai fails for no switchbench
  • [#5437] mathtest fails to compile
  • [#5551] SPI message lost when bus locked
  • [#5370] alsa tool fails to work after wake up from mem in bf537-stamp with ad1836 (can't resolve symbol)
  • [#5561] [ltp ]Kernel dump info when run ltp test cases access02, chown03, fchmod06, fchown03, fchown04
  • [#5377] amixer fail to run on ad1836 audio driver on BF537-STAMP
  • [#5475] build mkfs.ubifs on trunk head fails
  • [#5562] [ltp]some ltp test case is broken for getipckey and getcwd
  • [#5487] build usb.c fail in testsuites/usbdev/ test at asm/swab.h
  • [#5489] t2/t4 failed in gadget zero bulk test with dma mode
  • [#5567] build nand for bf537 fails on trunk
  • [#5494] Run tftlcd test case in bf548-ezkit, kernel crashed at the end
  • [#4879] traps test case 21 exception 0x3f: l1_instruction_access would make kernel panic on bf533 stamp
  • [#5568] Framebuffer DMA Error!!
  • [#5515] 4 more trap cases fails on bf533
  • [#5379] run scratchpad case sometimes would fail
  • [#5519] pushing Blackfin serial resources to boards broke many boards
  • [#5389] build pictureflow fails at branch head
  • [#5531] Usb SL811 failed on uclinux2009r1-rc6 on bf532 board.
  • [#5523] Blackfin MUSB build fails after update to 2.6.31
  • [#5391] For ad1836 and ad1981b, sometimes sound shakes at the end
  • [#5404] build kernel with 0x2000 as BOOT_LOAD address sometimes would fails at build-busybox-1.13.4
  • [#5469] CPU hardly idles anymore in svn trunk
  • [#5695] Build bf537-stamp fails at ad73322 for the latest trunk
  • [#5702] build xenomai into fdpic format fails for no libnative.so
  • [#5427] ircp failed on bf533-stamp
  • [#5708] Kernel can not boot up when spimmc driver is interrupt drivern in PIO mode
  • [#5711] gfortran case default_format_1.exe fails on 09r1 kernel but pass on trunk head
  • [#5712] I2C client drivers using dev_pm_ops fail to receive suspend/resume callbacks
  • [#5715] libpcap fails to compile in trunk
  • [#5589] STLport build fails
  • [#5724] SPORT driver crash on reload
  • [#5449] bfin_sdh doesn't save and restore peripheral context upon resume
  • [#5580] GPIO pin not reserved for CTS function on SPORT-UART driver
  • [#5521] trunk head build fails at ipc/shm.c
  • [#5636] generic gpio works on bf533 in the opposite way
  • [#5637] Kernel crashed when arecord and aplay on bf537-stamp with SoC I2S audio
  • [#5647] SPI driver bus_unlock() does not schedule postponed SPI messages
  • [#5683] build nand fails for format error
  • [#5689] while two or multi spi devices use gpio cs, spi setup will fail
  • [#5558] bfin mac multi-cast sending fails to work
  • [#5816] PREEMPT_RT: cyclic test stalls in some test mode
  • [#5824] some kernel modules fail to link due to losing strcpy in trunk head
  • [#5707] error in user/procps/Makefile
  • [#5841] [ltp] ltp test case shmctl01/semctl01 can not execute
  • [#5605] Build bf537-stamp fail at bf5xx-i2s.c in latest trunk
  • [#5614] With latest toolchain in trunk, fail to build some apps and libs at fork
  • [#5625] Build microwin app fails in trunk with 4.3 toolchain
  • [#5626] Build lib mad fail at option "-fforce-mem" with gcc 4.3
  • [#5722] bfin_sport_spi broken by cs_gpio changes
  • [#5627] fail to control gpio used by led and button through /sys/class/gpio/
  • [#5927] PR bit other than RAF bit in EMAC OPMODE register should be set for promisuous mode in bfin_mac driver
  • [#5727] build e2fsprogs-1.41.12 fail sometimes because of compiling order
  • [#5631] Build lib confuse failed with gcc 4.3 toolchain
  • [#5759] fix build for pwlib
  • [#5651] Build lirc failed at missing files
  • [#5931] Trying to compile CAN4LINUX for BF537-STAMP board but compilation is failing
  • [#5656] Build iproute2 fails at trunk for dlfcn.h when built as FLAT
  • [#5743] sound/soc/blackfin/bf5xx-ad1938.c build fails after 2.6.32 upgrade
  • [#5801] No interrupt occurs when reconnect gadget device in OTG mode.
  • [#5657] [ltp] ltp test case mount03/umount03 fail with error of "No such device"
  • [#5808] mmc configuration error in make config
  • [#5804] bf531: ethernet not working when switching to 2009R1
  • [#5810] initial sp is given wrong value and INIT_TASK_DATA is not linked into data
  • [#6335] Build xip failed in fdpic format when xenomai is enabled
  • [#7224] undifined variable x25_address in ./user/net-tools/lib/x25_src.c
  • [#5598] bluez-utils has parallel build issues with parser.h
  • [#5668] Fail to build app bluez-utils
  • [#7251] Blackfin SPI driver doesn't handle repeated changes in CPOL, CPHA and LSBF correctly
  • [#5767] In 09r1.1 branch, all ltp test cases show stack overflow in bf561 SMP kernel
  • [#5684] touching keypad on bf548 will make system dead and restart
  • [#7287] Can not build usb.c with libaio
  • [#5687] SPI read/write be wrong after suspend to memory and resume
  • [#7315] [ltp] ltp test case getrusage04 from ltp-full-20120903 fails in trunk
  • [#7328] Fail to compile pthread_test after toolchain update
  • [#5876] Repeating rsh/rcp causes error "poll: protocol failure in circuit setup"
  • [#7329] Fail to compile netperf after toolchain update
  • [#7333] Test dll fails to run after toolchain update
  • [#5741] adau1371 and adau1761 fail to build after 2.6.32 upgrade
  • [#7337] [ltp] ltp test case mount02 fails in ltp-full-20120903
  • [#7338] [ltp] ltp test case mount03 fails in ltp-full-20120903
  • [#5821] Fail to build pngview on regression machines with suse 10.2
  • [#5900] hardware single stepping in userspace does not handle syscalls correctly
  • [#5659] [ltp] ltp test case eventfd01 fail
  • [#7339] [ltp] can not apply patch of lchown02 in ltp-full-20101031 to ltp-full-20120903
  • [#7343] [ltp] LTP test case chdir04 fails in ltp-full-20120903
  • [#7396] build netperf fails for undefined reference to `___CPU_ZERO'
  • [#7483] bfin_sport driver does not work well in TDM DMA mode
  • [#7506] Dropbear does not build
  • [#5757] drop USER_SQUASHFS_MKSQUASHFS7Z as squashfs 4.0 does not support 7z anymore
  • [#5758] fix build for libopenh323
  • [#5833] trap test running on the second core of bf561 has serveral fails
  • [#5755] romfs target fails for lib/pwlib
  • [#5760] fix asterisk build
  • [#5756] romfs target fails for lib/libopenh323
  • [#5877] SPI transmit cs_change flag not properly handled
  • [#5939] bfin-can fails to build after linux-2.6.33 upgrade
  • [#5879] GPIO controlled slave request may fail when bfin_spi_setup() gets executed twice
  • [#5774] [ltp]ltp test case will be killed by oom-killer on bf533-ezkit in 09r1 branch occasionally
  • [#5894] BF527 uImage Flashing issue(Copy to Flash... Flash not Erased)
  • [#5941] links fails in trunk due to using fork()
  • [#5942] build usb host fail when remove anomaly 456 for BF526-EZBRD
  • [#7250] On bfin ppi test, it fails to quit from slave when send "q" from master
  • [#7379] Fail to build alsa lib in latest trunk with upgraded toolchain
  • [#5792] enc28j60 spi net fails to ping with host on trunk head kernel
  • [#4436] BF527-EZKIT unable to receive large files over UART in DMA mode
  • [#4764] Kernel prints warning when booting from jffs2 rootfs in nor flash on bf548-ezkit
  • [#5903] Impossible to work properly with two or more SPI slave devices using spi_bfin5xx driver.
  • [#6386] build iproute2 may fail at ifstat.c sometimes in latest trunk(2010)
  • [#6331] There is error in adau1371 audio testing on bf527-ezkit(2010)
  • [#5933] BF561-EZKIT SMP kernel can not wake up from standby mode by uart interrupt
  • [#4713] dmacopy tries to test L2 on BF537
  • [#6564] dmacopy test on bf561-ezkit failed at sram_alloc in L1(2011)
  • [#4997] ppitest fails for bfin_ppi driver on bf537
  • [#5940] lynx fails in trunk due to using fork()
  • [#4104] Format usbdisk failed with mke2fs in trunk
  • [#6578] iccutils build fails at scalar.c(2011)
  • [#3883] ftp server crash after connetion or chdir with MidnightCommander4.6.1
  • [#4697] kernel crash on bf533-stamp/bf533-ezkit after config IP for ethernet port
  • [#4050] xip test case failed in BF548-EZKIT
  • [#3991] mmc_spi not working out of the box.
  • [#3996] dhcpcd not stable on BF548-EZKIT
  • [#5136] Linphone: Can't hear each other and "Data access misaligned address violation"
  • [#5214] trunk applications don't build with trunk toolchain due to missing fork()
  • [#4055] top (busybox) crashs
  • [#5162] Linphone: Data access misaligned address
  • [#4992] bfin_sdh fails to build for BF514/BF516
  • [#5570] reboot on bf527-ezkit with nand and ubifs enabled fails
  • [#4955] 548 SDH: netperf, iperf triggers libertas error
  • [#5522] Lib DirectFB-1.4.0 crashes when run DirectFB demo on SVN trunk
  • [#3882] copy file function cp, after few times consume all memory
  • [#4773] BF527 usb-ide hard disk error

[#5662] Uncached DMA region no longer being uncached

[#5662] Uncached DMA region no longer being uncached

Submitted By: Michael Hennerich

Open Date

2009-11-04 05:53:35     Close Date

2009-12-14 10:46:00

Priority:

Medium High     Assignee:

Barry Song

Status:

Closed     Fixed In Release:

N/A

Found In Release:

2010R1     Release:

trunk

Category:

Memory     Board:

STAMP

Processor:

ALL     Silicon Revision:

any

Is this bug repeatable?:

Yes     Resolution:

Fixed

Uboot version or rev.:

trunk     Toolchain version or rev.:

trunk

App binary format:

N/A     

Summary: Uncached DMA region no longer being uncached

Details:

Uncached DMA region no longer being uncached.

The current code that polulates the DCPLB tables places a 4MB DCPLB at 0x03c00000

This covers the uncached region starting at 0x03f00000.

dma_alloc_init: dma_page @ 0x02680000 - 256 pages at 0x03f00000 

root:/> cat /proc/cplbinfo/cpu0/dcplb

DCPLBs are enabled: 0x100f

Index   Address         Data    Size    U/RD    U/WR    S/WR    Switch

0       0x00000000      00083   1K      N       N       N       N

1       0x00000000      3d09d   4M      Y       Y       Y       N

2       0x00400000      3d09d   4M      Y       Y       Y       N

3       0xff800000      3009f   4M      Y       Y       Y       N

4       0x02000000      3d09d   4M      Y       Y       Y       Y

5       0x02400000      3d09d   4M      Y       Y       Y       Y

6       0x03c00000      3009d   4M      Y       Y       Y       Y

7       0x02800000      3d09d   4M      Y       Y       Y       Y

8       0x00000000      00000   1K      N       N       N       Y

9       0x00000000      00000   1K      N       N       N       Y

10      0x00000000      00000   1K      N       N       N       Y

11      0x00000000      00000   1K      N       N       N       Y

12      0x00000000      00000   1K      N       N       N       Y

13      0x00000000      00000   1K      N       N       N       Y

14      0x00000000      00000   1K      N       N       N       Y

15      0x00000000      00000   1K      N       N       N       Y

root:/>

Follow-ups

--- Michael Hennerich                                        2009-11-04 06:38:19

>

Looks like this issue exists on 2009R1 as well ...

-Michael

--- Mike Frysinger                                           2009-11-04 20:10:50

seems to work on CM-BF537e.  could you post your .config ?

DCPLBs are enabled: 0x100f

Index   Address         Data    Size    U/RD    U/WR    S/WR    Switch

0       0x00000000      00083   1K      N       N       N       N

1       0x00000000      3109d   4M      Y       Y       Y       N

2       0xff800000      3009f   4M      Y       Y       Y       N

3       0x00400000      3109d   4M      Y       Y       Y       Y

4       0x01000000      3109d   4M      Y       Y       Y       Y

5       0x01400000      3109d   4M      Y       Y       Y       Y

6       0x20000000      3009d   4M      Y       Y       Y       Y

7       0x01f00000      2009d   1M      Y       Y       Y       Y

8       0x00c00000      3109d   4M      Y       Y       Y       Y

9       0x00800000      3109d   4M      Y       Y       Y       Y

10      0x01800000      3109d   4M      Y       Y       Y       Y

11      0x01c00000      2109d   1M      Y       Y       Y       Y

12      0x01d00000      2109d   1M      Y       Y       Y       Y

13      0x01e00000      2109d   1M      Y       Y       Y       Y

14      0x00000000      00000   1K      N       N       N       Y

15      0x00000000      00000   1K      N       N       N       Y

--- Mike Frysinger                                           2009-11-04 20:48:20

hrm, there does seem to be a bug if you poke the hole:

  available = 0x003d8000-0x01eff000

  DMA Zone  = 0x01f00000-0x02000000

if i access 0x01eff001, we end up with:

8       0x01e00000      2009d   1M      Y       Y       Y       Y

that region should be cached.  guess the question is why does the available

region end one page before the dma zone instead of at the dma zone ...

--- Mike Frysinger                                           2009-11-04 21:39:04

hmm, that 4k hole is because of your svn 2773 commit Michael ;).  but the

changelog doesnt really indicate why it's needed.

#if !defined(CONFIG_MTD_UCLINUX)

    /*In case there is no valid CPLB behind memory_end make sure we don't get

to close*/

    memory_end -= SIZE_4K;

#endif

--- Graf Yang                                                2009-11-04 23:01:25

6       0x03c00000      3009d   4M      Y       Y       Y       Y

The '3009d' means none cached 4M page. So it is still be uncached.

--- Mike Frysinger                                           2009-11-04 23:23:10

true, but the nompu code should have generated multiple 1M mappings instead of a

single 4M mapping

--- Graf Yang                                                2009-11-05 00:01:05

If create the low and high bounds for the DMA_UNCACHED_REGION, the nompu code

will create 1M mappings one by one. Currently it only have high bounds.

But is it necessary?

--- Michael Hennerich                                        2009-11-05 03:58:19

Mike,

>hmm, that 4k hole is because of your svn 2773 commit Michael ;).  but

>the changelog doesnt really indicate why it's needed.

>

>#if !defined(CONFIG_MTD_UCLINUX)

>    /*In case there is no valid CPLB behind memory_end make sure we

>don't get to close*/

>    memory_end -= SIZE_4K;

>#endif

IIRC it was a workaround for some HW Errors we've seen

- can't remember which one of the below Anomalies it was -

05000189 - False Protection Exceptions.

05000310 - False hardware errors caused by fetches at the boundary of reserved

memory.

But it was back when we used to have the ext2 fs MTD uclinux at the very top of

memory.

I could have sworn that the DCPLB indicated cacheable - must have been

cross-eyed

Also the bugs I've seen where typical ones when doing DMA on cached memory

without flush/inv.

Nevertheless - this 4MB DCPLD for a 1MB unchecked are is very bad.

It makes the top 3MB of memory which is typically heavily used un-cacheable.

BTW - the I've seen this on BF537-STAMP 1B un-cacheable area compiled for

silicon rev 0.2.

It's actually different when compiled for 0.3

-Michael

--- Mike Frysinger                                           2009-11-05 08:01:42

at the very least, the code should be checking to see if the DMA region is there

too before removing 4k -- the DMA region gives plenty of buffer space.  and it

should have "if (ANOMALY_xxx)".

ignoring that, anomaly 310 also applies to L1 regions too and we dont handle

those.  a better workaround for that would be to update the hardware error

handler like the anomaly sheet suggests -- ignore misses when the address in

question has a valid mapping.  shouldnt be a lot of overhead here since hardware

errors rarely occur.

anomaly 189 should be handled already in the traps code since that applies to

edge of cplb mappings, not just edge of valid memory, and backing off the memory

limit wouldnt change the rest.

--- Barry Song                                               2009-11-20 02:45:21

BTW, is there anyone who can tell me why we need a reserved dma uncache area? It

seems it is not a common way. Why not get memory from normal area directly and

set uncacheable/cacheable at run-time? If blackfin DMA can access all memory

bus, why we need DMA zone?

And I am also strange why we call invalid/flush cache directly for DMA transfer

in many drivers. Why not we use dma_map_single families stream dma api?

--- Michael Hennerich                                        2009-11-20 03:46:45

>BTW, is there anyone who can tell me why we need a reserved dma uncache

>area? It seems it is not a common way. Why not get memory from normal

>area directly and set uncacheable/cacheable at run-time?

We would end up with the MPU case - where we cover the entire memory with 4k

CPLBs.

Memory would come from the common memory pool and some instance would need to

take care that DMA memory is set uncacheable. 

Answering your question - For performance reasons...

>If blackfin DMA

>can access all memory bus, why we need DMA zone?

To avoid cache coherency problems, and to avoid Core flush/invalidate cycles.

Think about the framebuffer case -

User space asynchronously writes into some mmaped memory area.

While the PPI DMA runs in autobuffer mode. 

>And I am also strange why we call invalid/flush cache directly for DMA

>transfer in many drivers. Why not we use dma_map_single families stream

>dma api?

It's up to the drivers author - if a driver is supposed to work on other

architectures, too.

You should use dma_map_single and friends.

But this doesn't change the fact that you need to flush/invalidate on every

DMA/Core access transition.

--- Barry Song                                               2009-11-20 04:12:52

>(enter your response here)

--- Barry Song                                               2009-11-20 04:18:56

>>If blackfin DMA

>>can access all memory bus, why we need DMA zone?

>

>To avoid cache coherency problems, and to avoid Core

>flush/invalidate cycles.

>Think about the framebuffer case -

>User space asynchronously writes into some mmaped memory area.

>While the PPI DMA runs in autobuffer mode.

I know the dma cache coherency issue. Here my question is actually the same

with the 1st one. I just suspect why we need a resevered area.

Since it is due to performance, I understand our current design now. If our

hardware has good support in MPU, we shouldn't reserve this kind of area in

fact.

>

>>And I am also strange why we call invalid/flush cache directly for DMA

>>transfer in many drivers. Why not we use dma_map_single

>families stream

>>dma api?

>

>It's up to the drivers author - if a driver is supposed to

>work on other architectures, too.

>You should use dma_map_single and friends.

>But this doesn't change the fact that you need to

>flush/invalidate on every DMA/Core access transition.

I didn't find we have fulfilled these APIs. To be compatible, do you think we

should start a task for it?

--- Sonic Zhang                                              2009-11-20 04:46:34

Because when init memory pages, kernel DMA zone should be located before the

NORMAL zone. But, in NOMMU system, the beginning of the physical memory should

be reserved for zero page and zero page should be part of the NORMAL zone. So,

there is no space for a DMA zone in between. In MMU system, there is no physical

memory for a zero page, it is fine to insert DMA zone before the NORMAL zone.

This is a limitation of the kernel memory zone design.

--- Barry Song                                               2009-11-20 04:57:09

>Because when init memory pages, kernel DMA zone should be located before

the

>NORMAL zone. But, in NOMMU system, the beginning of the physical memory

should

>be reserved for zero page and zero page should be part of the NORMAL zone.

So,

>there is no space for a DMA zone in between. In MMU system, there is no

physical

>memory for a zero page, it is fine to insert DMA zone before the NORMAL

zone.

>This is a limitation of the kernel memory zone design.

I think I am talking about different problems with you. The purpose of DMA ZONE

is for old ISA which can only access <16MB memory bus. Modern embedded

architecture has no this limit. So DMA memory is allocated from normal memory

and DMA zone size is 0. So my original thinking is deleting this zone on

blackfin.

--- Barry Song                                               2009-11-20 05:03:30

Or we can say all memory is in DMA ZONE for modern embedded architecture since

DMA can access all memory bus area.

--- Mike Frysinger                                           2009-11-20 15:01:22

we will still always have this uncached zone for people to leverage.

there is a tracker open already for filling out the dma_map_single and related

functions, but i dont think anyone has picked it up.

i dont think there's a problem marking all memory as being capable of DMA-ing

(dma zone), but i havent looked too much at the different zoning aspects.

--- Robin Getz                                               2009-11-20 16:21:08

Just to be pedantic -- You can not DMA into/out of L1 sratchpad - so it is not

"all memory bus area".

-Robin

--- Barry Song                                               2009-11-22 23:37:46

>Just to be pedantic -- You can not DMA into/out of L1 sratchpad - so it is

not

>?"all memory bus area".

That doesn't matter since L1 is not managed by kernel mm in blackfin. That will

not affect the kernel DMA ZONE layout.

--- Robin Getz                                               2009-11-23 06:55:43

Barry:

You didn't say "all kernel managed memory" - you said "all

memory".

Like I said - it is pedantic.

--- Barry Song                                               2009-11-23 22:00:40

>true, but the nompu code should have generated multiple 1M mappings instead

of a

>single 4M mapping

According to

MGR_ATTR static int dcplb_miss(int cpu)

{

        ...

        addr1 = addr & ~(SIZE_4M - 1);

        addr &= ~(SIZE_1M - 1);

        d_data |= PAGE_SIZE_1MB;

        if (addr1 >= base && (addr1 + SIZE_4M) <= eaddr) {

                /* 

                 * This works because

                 * (PAGE_SIZE_4MB & PAGE_SIZE_1MB) == PAGE_SIZE_1MB.

                 */

                d_data |= PAGE_SIZE_4MB;

                addr = addr1;

        }  

        /* Pick entry to evict */

        idx = evict_one_dcplb(cpu);

        ...

}

The code actually creates 1MB entry for DMA uncache area if the area is

1MB/2MB. And it creates 4MB entry for 4MB DMA uncache area. Only when

ANOMALY_05000263 exists, the last dcplb bound will be >4MB less than ram_end,

then 4MB area is created for 1MB/2MB DMA area. But there is no problem due to

that memory is actually not useful.

--- Barry Song                                               2009-11-23 22:01:07

>true, but the nompu code should have generated multiple 1M mappings instead

of a

>single 4M mapping

According to

MGR_ATTR static int dcplb_miss(int cpu)

{

        ...

        addr1 = addr & ~(SIZE_4M - 1);

        addr &= ~(SIZE_1M - 1);

        d_data |= PAGE_SIZE_1MB;

        if (addr1 >= base && (addr1 + SIZE_4M) <= eaddr) {

                /* 

                 * This works because

                 * (PAGE_SIZE_4MB & PAGE_SIZE_1MB) == PAGE_SIZE_1MB.

                 */

                d_data |= PAGE_SIZE_4MB;

                addr = addr1;

        }  

        /* Pick entry to evict */

        idx = evict_one_dcplb(cpu);

        ...

}

The code actually creates 1MB entry for DMA uncache area if the area is

1MB/2MB. And it creates 4MB entry for 4MB DMA uncache area. Only when

ANOMALY_05000263 exists, the last dcplb bound will be >4MB less than ram_end,

then 4MB area is created for 1MB/2MB DMA area. But there is no problem due to

that memory is actually not useful.

--- Barry Song                                               2009-11-24 00:02:33

Michael,

It seems not right you setup memory_end -= SIZE_4K to keep the last 4K in

memory_end useless since memory_end is usually not the boundary between valid

memory and reserved memory. If we want to use this way to workaround, maybe we

can leave 4K of ramend useless?

And have you once repeated this anomaly and how to repeat it? I use a loop to

read/write data before the real boundary(0x03ffffff), but never trigger any

External Memory Addressing Error.

-Barry

--- Michael Hennerich                                        2009-11-24 03:11:05

Barry,

I think we can remove the -4k stuff completely.

(Which will fix this bug)

We now have a workaround and the DMA Zone (like Mike said) acts as buffer too.

The whole thing is a leftover from the time we didn't know how to work around.

In addition the our rootfs these days used to be at the very top of memory.

-Michael

--- Mike Frysinger                                           2009-11-25 16:34:43

the anomaly 310 check needs to be in the "case VEC_HWERR" under

SEQSTAT_HWERRCAUSE_EXTERN_ADDR.  then we jump to traps_done if we calculate that

the error was a false positive.

access_ok() is overkill.  the anomaly text says it's at the boundary of

reserved memory, so simply use the two limits that are in play here -- the end

of kernel memory (physical_mem_end) and the end of L1 ISRAM.

but before we go banging our heads too much, we really should have a test case

that exercises the anomaly.  otherwise we're going to spend a lot of time on

something that might ultimately be completely worth less.  it should be checked

into the blkfin-test/ subdir too so we can play with it later.  i'm attaching

the VDSP example that was used to reproduce the issue.

i also dont quite trust the anomaly text.  it says "hardware error"

which is IVG5, not an exception, so the contents of the FAULT_ADDR MMRs wont be

valid.  we should probably double check with the apps team to make sure this

wording is clarified.

--- Barry Song                                               2009-11-26 22:05:43

I agree 310 should be in the "case VEC_HWERR" under

SEQSTAT_HWERRCAUSE_EXTERN_ADDR. Then it seems 189 should be moved too? For the

two anomalies, we should confirm them then ignore the traps directly without

sending any signal.

I am strange I can't trigger 310 anomaly at memory end by both instruction

fetches and data fetches at all:

instruction fetches:

03ffffd0 <_trigger_boundary_anomaly>:

3ffffd0:       e6 6f           SP += -0x4;             /* ( -4) */

3ffffd2:       13 60           R3 = 0x2 (X);           /*              R3=0x2(

2) */

3ffffd4:       01 60           R1 = 0x0 (X);           /*              R1=0x0(

0) */

3ffffd6:       0a 60           R2 = 0x1 (X);           /*              R2=0x1(

1) */

3ffffd8:       09 20           JUMP.S 0x3ffffea

<_trigger_boundary_anomaly+0x1a>;

3ffffda:       10 0c           CC = R0 == 0x2;

3ffffdc:       10 18           IF CC JUMP 0x3fffffc

<_trigger_boundary_anomaly+0x2c>;

3ffffde:       00 0c           CC = R0 == 0x0;

3ffffe0:       0e 14           IF !CC JUMP 0x3fffffc

<_trigger_boundary_anomaly+0x2c> (BP);

3ffffe2:       32 93           [SP] = R2;

3ffffe4:       30 91           R0 = [SP];

3ffffe6:       10 0d           CC = R0 <= 0x2;

3ffffe8:       08 10           IF !CC JUMP 0x3fffff8

<_trigger_boundary_anomaly+0x28>;

3ffffea:       30 91           R0 = [SP];

3ffffec:       08 0c           CC = R0 == 0x1;

3ffffee:       f6 17           IF !CC JUMP 0x3ffffda

<_trigger_boundary_anomaly+0xa> (BP);

3fffff0:       33 93           [SP] = R3;

3fffff2:       30 91           R0 = [SP];

3fffff4:       10 0d           CC = R0 <= 0x2;

3fffff6:       fa 1f           IF CC JUMP 0x3ffffea

<_trigger_boundary_anomaly+0x1a> (BP);

3fffff8:       26 6c           SP += 0x4;              /* (  4) */

3fffffa:       10 00           RTS;

3fffffc:       31 93           [SP] = R1;

3fffffe:       f3 2f           JUMP.S 0x3ffffe4

<_trigger_boundary_anomaly+0x14>;

data fetches:

u16 *p = 0x03FFFFD0;

   

for(i=0;i<24;i++)

     *p++ = 0;

p = 0x03FFFFD0;

for(i=0;i<24;i++)

      a = *p++;

Both codes can run normally.

--- Barry Song                                               2009-11-27 03:35:12

I can repeat anomaly 310 at L1 instruction sram boundary by instruction fetch:

External Memory Addressing Error

dcplb_fault_addr:00000000

icplb_fault_addr:00000000

External Memory Addressing Error

Kernel OOPS in progress

HW Error context

CURRENT PROCESS:

COMM=modprobe PID=122 CPU=0

TEXT = 0x02a00040-0x02a49920        DATA = 0x02a49924-0x02a5b894

BSS = 0x02a5b894-0x02a5d214  USER-STACK = 0x02a65f6c

return address: [0xffa0ff0a]; contents of:

0xffa0fee0:  0c10  1880  0c18  187e  0c08  1403  6010  b1f0

0xffa0fef0:  a1f0  0c10  1874  0c18  1872  0c08  1403  6010

0xffa0ff00:  b1f0  a1f0  0c10  1868  0c18 [1866] 0c08  1403

0xffa0ff10:  6010  b1f0  a1f0  6408  b1f0  a1f0  0c10  1859

dcplb_fault_addr and icplb_fault_addr are both 0.

    Files

    Changes

    Commits

    Dependencies

    Duplicates

    Associations

    Tags

File Name     File Type     File Size     Posted By

Anomaly_HWERR_boundary_reserved_mem_with_CPLB.zip    application/zip    77986    Mike Frysinger

Attachments:
Anomaly_HWERR_boundary_reserved_mem_with_CPLB.zip
  • Share
  • History
  • More
  • Cancel
analog-devices logo

About Analog Devices

  • Who We Are
  • Careers
  • Newsroom
  • What We Do (Signals+)
  • Investor RelationsExternalLink
  • Quality & Reliability
  • Sales and Distribution
  • What's New on Analog.com
  • Contact Us

Find Help

  • Support
  • Resources
  • WikiExternalLink
  • Analog Dialogue
  • ADI Developer PortalExternalLink

myAnalog

Interested in the latest news and articles about ADI products, design tools, training, and events?

Go to myAnalog
  • Instagram page
  • Twitter page
  • Linkedin page
  • Youtube page
  • Facebook
  • Legal and Risk
  • Accessibility
  • Privacy Policy
  • Privacy Settings
  • Cookie Settings

©2026 Analog Devices, Inc. All Rights Reserved

analog-devices

About Analog Devices

Down Up
  • Who We Are
  • Careers
  • Newsroom
  • What We Do (Signals+)
  • Investor RelationsExternalLink
  • Quality & Reliability
  • Sales and Distribution
  • What's New on Analog.com
  • Contact Us

Find Help

Down Up
  • Support
  • Resources
  • WikiExternalLink
  • Analog Dialogue
  • ADI Developer PortalExternalLink

myAnalog

Interested in the latest news and articles about ADI products, design tools, training, and events?

Go to myAnalog
Instagram page Facebook Twitter page Linkedin page Youtube page
  • Legal and Risk
  • Accessibility
  • Privacy Policy
  • Privacy Settings
  • Cookie Settings

©2026 Analog Devices, Inc. All Rights Reserved