From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1I5mtf-0000R2-Hl for qemu-devel@nongnu.org; Tue, 03 Jul 2007 14:14:43 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1I5mte-0000MV-2z for qemu-devel@nongnu.org; Tue, 03 Jul 2007 14:14:43 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1I5mte-0000MJ-07 for qemu-devel@nongnu.org; Tue, 03 Jul 2007 14:14:42 -0400 Received: from mx2.suse.de ([195.135.220.15]) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1I5mtd-0008WQ-Ky for qemu-devel@nongnu.org; Tue, 03 Jul 2007 14:14:41 -0400 Received: from Relay1.suse.de (mail2.suse.de [195.135.221.8]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx2.suse.de (Postfix) with ESMTP id EE32B21571 for ; Tue, 3 Jul 2007 20:14:38 +0200 (CEST) Message-ID: <468A92AC.4040006@suse.de> Date: Tue, 03 Jul 2007 20:17:16 +0200 From: Alexander Graf MIME-Version: 1.0 Subject: Re: [Qemu-devel] [PATCH] no mmap for alsa References: <468A8A4B.8070303@suse.de> In-Reply-To: <468A8A4B.8070303@suse.de> Content-Type: multipart/mixed; boundary="------------070306050607030005080502" Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org This is a multi-part message in MIME format. --------------070306050607030005080502 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Oops, the patch did not compile. This is the updated version. Alex --------------070306050607030005080502 Content-Type: text/plain; name="alsa_mmap" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="alsa_mmap" 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; --------------070306050607030005080502--