64-bit DMA weirdness

Hey there -

I use a SoundBlaster Live based on the emu10k1 chip; I’ve a stack of 'em so that I can continue to use this card 'til PCI goes away.

I prefer that my MIDI synth do what I tell it to do, and Timidity, FluidSynth and so on don’t; hardware wavetable synthesis rawks.

Anyway, thanks to the DMA addressing scheme on this card using only 31 bits, ever since stepping into the 64-bit world every time I upgrade a kernel I then edit arch/x86/include/asm/dma.h to use 2GB of space rather than 4GB so as to be able to load large soundfonts - an ugly hack, but necessary; I then compile and install this slightly customised kernel. See comment by Thomas Richter at https://bugs.launchpad.net/ubuntu/+source/awesfx/+bug/183456 if you want details.

viz:

I change this:

/* 4GB broken PCI/AGP hardware bus master zone */
#define MAX_DMA32_PFN ((4UL * 1024 * 1024 * 1024) >> PAGE_SHIFT)

to this:
/* 4GB broken PCI/AGP hardware bus master zone */
#define MAX_DMA32_PFN ((2UL * 1024 * 1024 * 1024) >> PAGE_SHIFT)

Seems counterintuitive, but it works - and has for over a decade. However, with 5.3.18-lp152.63 this no longer works; sfxload runs out of memory as though I’d not modified the kernel.

So… I’m running 5.3.18-lp152.60 because it still works, but I weep for the future.

Ideas? Thanks.

Firestick is the most used streaming devices throughout the world and is the best for the cord-cutters. If you have a Spectrum subscription and a Fire TV Stick, you can watch the content from your cable lineup through the compact streaming device. Get details about how to install spectrum app for firestick steps are available here.

@bixbyru:

Which Kernel driver are you using?

  • snd-emu10k1 or emu10k1?

AFAICS, only the snd-emu10k1 driver is supplied by default with the Linux Kernel …

Which awesfx package version are you using?

  • Standard – version 0.5.1e
  • multimedia:apps – version 0.5.2

I’m using snd-emu… - several drivers.

This is not a driver issue; this is an issue with the 32-bit DMA pool.

Thanks?

Oh… and the standard awesfx package.

However and again, this thread regards how the latest (for Leap 15.2) kernel sidesteps the “standard” approach to coddling 31-bit DMA hardware.

Thanks.

Try opensuse kernel mailing list.

Also you can try to restrict max memory for your system as suggested on https://www.alsa-project.org/wiki/Matrix:Module-emu10k1

You don’t mention which hardware you’re using – AMD or Intel?

As a thought – is the hardware using UEFI and, have you enabled UEFI Secure Boot?

  • I’m wondering if the “Kernel Lockdown” which arrived with Leap 15.2 for the case of UEFI Secure Boot, is messing up the 31-bit DMA addressing …

'K; I’ll give that a whirl.

Intel, dual Xeon; I use a server as my deskside computer because it’s indestructible, my data is safe and so on, and since I’m not a gamer it has more’n enough horsepower for my needs. Old HP Proliant ML370, from the mid-Shrubbya years and well before the onset of UEFI.

The “kernel lockdown” didn’t mess with me with 5.3.18-lp152.60, but still that provokes a “Hmmm…”

Thanks for the replies; please keep 'em coming.

Hi
Just making it a bit more robust against proprietary drivers that are not at least dual license… a win win… :wink:

Well, the tips at alsa-project.org outlined exactly what I’ve been doing - and what stopped working; editing the kernel, that is; trying to run in 2 GB is a nonstarter, as that’d be akin to “running” whilst wearing cement overshoes.

What did they do that’s ewscraying with me, why, and HOW…?!?