Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1760776AbXHPO1o (ORCPT ); Thu, 16 Aug 2007 10:27:44 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1760037AbXHPO1Y (ORCPT ); Thu, 16 Aug 2007 10:27:24 -0400 Received: from cantor2.suse.de ([195.135.220.15]:36254 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1759922AbXHPO1W (ORCPT ); Thu, 16 Aug 2007 10:27:22 -0400 Subject: RE: scripts/mod/file2alias.c cross compile problem From: Thomas Renninger Reply-To: trenn@suse.de To: Rusty Russell Cc: "Luck, Tony" , Adrian Bunk , Sam Ravnborg , Jan Dittmer , Len Brown , Linus Torvalds , Andrew Morton , linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org, linux-ia64@vger.kernel.org In-Reply-To: <1186092501.6131.154.camel@localhost.localdomain> References: <617E1C2C70743745A92448908E030B2A0211AFF0@scsmsx411.amr.corp.intel.com> <1186092501.6131.154.camel@localhost.localdomain> Content-Type: text/plain Organization: Novell/SUSE Date: Thu, 16 Aug 2007 16:27:15 +0200 Message-Id: <1187274435.8780.780.camel@queen.suse.de> Mime-Version: 1.0 X-Mailer: Evolution 2.8.2 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2614 Lines: 75 On Fri, 2007-08-03 at 08:08 +1000, Rusty Russell wrote: > On Thu, 2007-08-02 at 09:25 -0700, Luck, Tony wrote: > > > Adrian Bunk: scripts/mod/file2alias.c is compiled with HOSTCC and ensures that > > > kernel_ulong_t is correct, but it can't cope with different padding on > > > different architectures. > > > > Surely this is the root cause ... you can't expect that the alignment > > rules of HOSTCC to make any sense for an arbitraty target. > > > > > +#define FILLUP_LEN 7 /* dirty fix for i386 -> 64bit cross-compilation */ > > > > > > struct acpi_device_id { > > > __u8 id[ACPI_ID_LEN]; > > > + __u8 dummy[FILLUP_LEN]; > > > kernel_ulong_t driver_data; > > > }; > > > > What's so special about this structure that we get an error? > > It's in mod_devicetable.h: see comment at top of that file. These > structures serve dual purpose: to describe the capabilities of the > driver to the kernel probing functions, *and* to export them to > userspace tables. The former purpose is why there's a data pointer in > there. > > scripts/mod/file2alias is the program that reads this: although it can > be altered to parse 32-vs-64, Adrian's fix is the simplest. Oops, this will cause a lot build warnings, as this struct gets initialized like that: .. {"PNP0C0A", 0}, .. at a lot places. It would be better to bump up the id itself like the attached patch does... Thanks, Thomas ---------------------- Cross-compilation between e.g. i386 -> 64bit could break -> work around it Adrian Bunk: scripts/mod/file2alias.c is compiled with HOSTCC and ensures that kernel_ulong_t is correct, but it can't cope with different padding on different architectures. Signed-off-by: Thomas Renninger --- include/linux/mod_devicetable.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) Index: linux-2.6.23-rc3/include/linux/mod_devicetable.h =================================================================== --- linux-2.6.23-rc3.orig/include/linux/mod_devicetable.h +++ linux-2.6.23-rc3/include/linux/mod_devicetable.h @@ -159,7 +159,8 @@ struct ap_device_id { #define AP_DEVICE_ID_MATCH_DEVICE_TYPE 0x01 -#define ACPI_ID_LEN 9 +#define ACPI_ID_LEN 16 /* only 9 bytes needed here, 16 bytes are used */ + /* to workaround crosscompile issues */ struct acpi_device_id { __u8 id[ACPI_ID_LEN]; - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/