mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-12 08:48:48 +00:00
vme_user: Update API to work in mixed environments
This patch updates the vme_master and vme_slave structures to use types with well defined size and to prevent the compiler from inserting padding (between enable and vme_addr for one). The original vme_master and vme_slave structs would be different sizes and have different layouts depending on whether they were built for a 32-bit or 64-bit system. On x86 it is possible to have a 32-bit userspace and a 64-bit kernel. In this type of environment, the userspace and kernel vme_user APIs would disagree and prevent ioctls from executing (based on ioctl signatures from _IOR and _IOW). Signed-off-by: Aaron Sierra <asierra@xes-inc.com> Acked-by: Martyn Welch <martyn.welch@ge.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
c326cc023e
commit
66a01f1158
@ -7,10 +7,10 @@
|
||||
* VMEbus Master Window Configuration Structure
|
||||
*/
|
||||
struct vme_master {
|
||||
int enable; /* State of Window */
|
||||
unsigned long long vme_addr; /* Starting Address on the VMEbus */
|
||||
unsigned long long size; /* Window Size */
|
||||
u32 aspace; /* Address Space */
|
||||
u32 enable; /* State of Window */
|
||||
u64 vme_addr; /* Starting Address on the VMEbus */
|
||||
u64 size; /* Window Size */
|
||||
u32 aspace; /* Address Space */
|
||||
u32 cycle; /* Cycle properties */
|
||||
u32 dwidth; /* Maximum Data Width */
|
||||
#if 0
|
||||
@ -18,7 +18,7 @@ struct vme_master {
|
||||
int prefetchsize; /* Prefetch Read Size (Cache Lines) */
|
||||
char wrpostenable; /* Write Post State */
|
||||
#endif
|
||||
};
|
||||
} __packed;
|
||||
|
||||
|
||||
/*
|
||||
@ -31,17 +31,17 @@ struct vme_master {
|
||||
|
||||
/* VMEbus Slave Window Configuration Structure */
|
||||
struct vme_slave {
|
||||
int enable; /* State of Window */
|
||||
unsigned long long vme_addr; /* Starting Address on the VMEbus */
|
||||
unsigned long long size; /* Window Size */
|
||||
u32 aspace; /* Address Space */
|
||||
u32 enable; /* State of Window */
|
||||
u64 vme_addr; /* Starting Address on the VMEbus */
|
||||
u64 size; /* Window Size */
|
||||
u32 aspace; /* Address Space */
|
||||
u32 cycle; /* Cycle properties */
|
||||
#if 0
|
||||
char wrpostenable; /* Write Post State */
|
||||
char rmwlock; /* Lock PCI during RMW Cycles */
|
||||
char data64bitcapable; /* non-VMEbus capable of 64-bit Data */
|
||||
#endif
|
||||
};
|
||||
} __packed;
|
||||
|
||||
struct vme_irq_id {
|
||||
__u8 level;
|
||||
|
Loading…
x
Reference in New Issue
Block a user