From: Alexander Graf <agraf@suse.de>
To: qemu-devel@nongnu.org
Subject: [Qemu-devel] [PATCH] no mmap for alsa
Date: Tue, 03 Jul 2007 19:41:31 +0200 [thread overview]
Message-ID: <468A8A4B.8070303@suse.de> (raw)
[-- Attachment #1: Type: text/plain, Size: 521 bytes --]
Hi,
this is the last patch necessary to get pcm alsa running for i386-apps
on ppc.
Alsa does some fancy magic with mmap to share information with the
kernel. This is completely fine as long as we're talking about
arch(kernel) == arch(userspace), which apparently is not the case when
using qemu-user.
As a more or less hacky workaround on that I just disabled the mmap
calls alsa-lib uses to initiate communication with the kernel. If these
fail, alsa reverts to other means of communication which get converted.
Alex
[-- Attachment #2: alsa_mmap --]
[-- Type: text/plain, Size: 1136 bytes --]
Index: qemu/linux-user/mmap.c
===================================================================
--- qemu.orig/linux-user/mmap.c
+++ qemu/linux-user/mmap.c
@@ -152,6 +152,9 @@ static int mmap_frag(target_ulong real_s
return 0;
}
+#define SNDRV_PCM_MMAP_OFFSET_STATUS 0x80000000;
+#define SNDRV_PCM_MMAP_OFFSET_CONTROL 0x81000000;
+
/* NOTE: all the constants are the HOST ones */
long target_mmap(target_ulong start, target_ulong len, int prot,
int flags, int fd, target_ulong offset)
@@ -192,6 +195,17 @@ long target_mmap(target_ulong start, tar
}
#endif
+ /* Alsa tries to communcate with the kernel via mmap. This usually
+ * is a good idea when user- and kernelspace are running on the
+ * same architecture but does not work out when not. To make alsa
+ * not to use mmap, we can just have it fail on the mmap calls that
+ * would initiate this.
+ */
+ if(offset == SNDRV_PCM_MMAP_OFFSET_STATUS || offset == SNDRV_PCM_MMAP_OFFSET_CONTROL) {
+ errno = EINVAL;
+ return -1;
+ }
+
if (offset & ~TARGET_PAGE_MASK) {
errno = EINVAL;
return -1;
next reply other threads:[~2007-07-03 17:38 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-07-03 17:41 Alexander Graf [this message]
2007-07-03 18:17 ` [Qemu-devel] [PATCH] no mmap for alsa Alexander Graf
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=468A8A4B.8070303@suse.de \
--to=agraf@suse.de \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.