Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 496083
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 13, 20262026-05-13T05:39:09+00:00 2026-05-13T05:39:09+00:00

I have a Linux device driver that interfaces to a device that, in theory,

  • 0

I have a Linux device driver that interfaces to a device that, in theory, can perform DMA using 64-bit addresses. I’d like to test to see that this actually works.

Is there a simple way that I can force a Linux machine not to use any memory below physical address 4G? It’s OK if the kernel image is in low memory; I just want to be able to force a situation where I know all my dynamically allocated buffers, and any kernel or user buffers allocated for me are not addressable in 32 bits. This is a little brute force, but would be more comprehensive than anything else I can think of.

This should help me catch (1) hardware that wasn’t configured correctly or loaded with the full address (or is just plain broken) as well as (2) accidental and unnecessary use of bounce buffers (because there’s nowhere to bounce to).

clarification: I’m running x86_64, so I don’t care about most of the old 32-bit addressing issues. I just want to test that a driver can correctly interface with multitudes of buffers using 64-bit physical addresses.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-13T05:39:10+00:00Added an answer on May 13, 2026 at 5:39 am

    /usr/src/linux/Documentation/kernel-parameters.txt

            memmap=exactmap [KNL,X86] Enable setting of an exact
                            E820 memory map, as specified by the user.
                            Such memmap=exactmap lines can be constructed based on
                            BIOS output or other requirements. See the memmap=nn@ss
                            option description.
    
            memmap=nn[KMG]@ss[KMG]
                            [KNL] Force usage of a specific region of memory
                            Region of memory to be used, from ss to ss+nn.
    
            memmap=nn[KMG]#ss[KMG]
                            [KNL,ACPI] Mark specific memory as ACPI data.
                            Region of memory to be used, from ss to ss+nn.
    
            memmap=nn[KMG]$ss[KMG]
                            [KNL,ACPI] Mark specific memory as reserved.
                            Region of memory to be used, from ss to ss+nn.
                            Example: Exclude memory from 0x18690000-0x1869ffff
                                     memmap=64K$0x18690000
                                     or
                                     memmap=0x10000$0x18690000

    If you add memmap=4G$0 to the kernel’s boot parameters, the lower 4GB of physical memory will no longer be accessible. Also, your system will no longer boot… but some variation hereof (memmap=3584M$512M?) may allow for enough memory below 4GB for the system to boot but not enough that your driver’s DMA buffers will be allocated there.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have a Linux driver that I would like to use it Mac OS
I'm developing a Linux driver loadable module and I have to use another device
I have a Linux C++ application and I'd like to test an object pointer
I have an embedded linux device and I would like to know the baseline
I am trying to understand how device driver works in linux. I have a
I have developed a USB device that communicates with linux over a simple but
We have a Linux server application that is comprised of a number of open-source
We have a Linux application that makes use of OpenSSL's Python bindings and I
I have a Linux web server and I'd like to make some database tables
Recently, i began developing a driver of an embedded device running linux. Until now

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.