On Sat, 16 Jan 2016 00:14:01 +0100, Andrew Morton wrote: > > On Sat, 16 Jan 2016 10:00:47 +1100 Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx> wrote: > > > Hi Andrew, > > > +#define SNDRV_COMPRESS_GET_CODEC_CAPS _IOWR('C', 0x11, struct snd_compr_caps) > > > #define SNDRV_COMPRESS_SET_PARAMS _IOW('C', 0x12, struct snd_compr_params) > > > #define SNDRV_COMPRESS_GET_PARAMS _IOR('C', 0x13, struct snd_codec) > > > #define SNDRV_COMPRESS_SET_METADATA _IOW('C', 0x14,\ > > > > > > then it compiles OK. So there's something special about `struct > > > snd_compr_codec_caps' which is confusing the compiler. > > > > Its very big (hint, I think it is bigger than 1 << 13). > > ah-hah. > > sizeof(struct snd_compr_codec_caps) is 11144 on x86_64 > allyesconfig, but x86_64 uses (1<<14), not (1<<13) - x86_64 has more > space in the ioctl payload. > > > So. Sound guys: your struct snd_compr_codec_caps is too large for > powerpc ioctls. Ouch, this was what I was concerned. I thought we did calculate it at the time writing API, alas, we failed. We need to do math drills again... There are a few ways to fix this, but all are not comfortable. A. Disable compress API for powerpc. B. Disable this ioctl for powerpc and keep it for others while providing yet a new ioctl for the similar functionality. B1. Pass the same struct via a pointer: this needs a special compat_ioctl handling B2. Reduce the size of struct snd_compr_codec_caps, e.g. set MAX_NUM_CODEC_DESCRIPTORS to 16. C. What else? Takashi -- To unsubscribe from this list: send the line "unsubscribe linux-next" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html