Commit 45bfe98b authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc-merge



Fix up delete/modify conflict of arch/ppc/kernel/process.c by hand (it's
gone, gone, gone).
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parents 9f5974c8 624cee31
......@@ -278,7 +278,7 @@ static void __init l2cr_init(void)
}
#endif
void __init pmac_setup_arch(void)
static void __init pmac_setup_arch(void)
{
struct device_node *cpu, *ic;
int *fp;
......
......@@ -208,10 +208,11 @@ static void __eeh_mark_slot (struct device_node *dn, int mode_flag)
{
while (dn) {
if (PCI_DN(dn)) {
PCI_DN(dn)->eeh_mode |= mode_flag;
/* Mark the pci device driver too */
struct pci_dev *dev = PCI_DN(dn)->pcidev;
PCI_DN(dn)->eeh_mode |= mode_flag;
if (dev && dev->driver)
dev->error_state = pci_channel_io_frozen;
......
......@@ -40,7 +40,7 @@ MODULE_VERSION(HVCS_ARCH_VERSION);
* functions aren't performance sensitive, so this conversion isn't an
* issue.
*/
int hvcs_convert(long to_convert)
static int hvcs_convert(long to_convert)
{
switch (to_convert) {
case H_Success:
......@@ -91,7 +91,7 @@ int hvcs_free_partner_info(struct list_head *head)
EXPORT_SYMBOL(hvcs_free_partner_info);
/* Helper function for hvcs_get_partner_info */
int hvcs_next_partner(uint32_t unit_address,
static int hvcs_next_partner(uint32_t unit_address,
unsigned long last_p_partition_ID,
unsigned long last_p_unit_address, unsigned long *pi_buff)
......
......@@ -51,8 +51,6 @@
#define DBG(fmt...)
extern int is_python(struct device_node *);
static void tce_build_pSeries(struct iommu_table *tbl, long index,
long npages, unsigned long uaddr,
enum dma_data_direction direction)
......
......@@ -192,7 +192,7 @@ struct file_operations scanlog_fops = {
.release = scanlog_release,
};
int __init scanlog_init(void)
static int __init scanlog_init(void)
{
struct proc_dir_entry *ent;
......@@ -222,7 +222,7 @@ int __init scanlog_init(void)
return 0;
}
void __exit scanlog_cleanup(void)
static void __exit scanlog_cleanup(void)
{
if (proc_ppc64_scan_log_dump) {
kfree(proc_ppc64_scan_log_dump->data);
......
......@@ -86,7 +86,7 @@ static void pseries_dedicated_idle(void);
struct mpic *pSeries_mpic;
void pSeries_show_cpuinfo(struct seq_file *m)
static void pSeries_show_cpuinfo(struct seq_file *m)
{
struct device_node *root;
const char *model = "";
......
......@@ -93,7 +93,7 @@ static int query_cpu_stopped(unsigned int pcpu)
return cpu_status;
}
int pSeries_cpu_disable(void)
static int pSeries_cpu_disable(void)
{
int cpu = smp_processor_id();
......@@ -109,7 +109,7 @@ int pSeries_cpu_disable(void)
return 0;
}
void pSeries_cpu_die(unsigned int cpu)
static void pSeries_cpu_die(unsigned int cpu)
{
int tries;
int cpu_status;
......
......@@ -381,7 +381,7 @@ int xics_get_irq(struct pt_regs *regs)
#ifdef CONFIG_SMP
irqreturn_t xics_ipi_action(int irq, void *dev_id, struct pt_regs *regs)
static irqreturn_t xics_ipi_action(int irq, void *dev_id, struct pt_regs *regs)
{
int cpu = smp_processor_id();
......
......@@ -139,7 +139,6 @@ static void dart_build(struct iommu_table *tbl, long index,
*(dp++) = DARTMAP_VALID | (rpn & DARTMAP_RPNMASK);
rpn++;
uaddr += DART_PAGE_SIZE;
}
......
......@@ -311,7 +311,7 @@ static void release_output_lock(void)
}
#endif
int xmon_core(struct pt_regs *regs, int fromipi)
static int xmon_core(struct pt_regs *regs, int fromipi)
{
int cmd = 0;
unsigned long msr;
......@@ -528,7 +528,7 @@ xmon_irq(int irq, void *d, struct pt_regs *regs)
return IRQ_HANDLED;
}
int xmon_bpt(struct pt_regs *regs)
static int xmon_bpt(struct pt_regs *regs)
{
struct bpt *bp;
unsigned long offset;
......@@ -554,7 +554,7 @@ int xmon_bpt(struct pt_regs *regs)
return 1;
}
int xmon_sstep(struct pt_regs *regs)
static int xmon_sstep(struct pt_regs *regs)
{
if (user_mode(regs))
return 0;
......@@ -562,7 +562,7 @@ int xmon_sstep(struct pt_regs *regs)
return 1;
}
int xmon_dabr_match(struct pt_regs *regs)
static int xmon_dabr_match(struct pt_regs *regs)
{
if ((regs->msr & (MSR_IR|MSR_PR|MSR_SF)) != (MSR_IR|MSR_SF))
return 0;
......@@ -572,7 +572,7 @@ int xmon_dabr_match(struct pt_regs *regs)
return 1;
}
int xmon_iabr_match(struct pt_regs *regs)
static int xmon_iabr_match(struct pt_regs *regs)
{
if ((regs->msr & (MSR_IR|MSR_PR|MSR_SF)) != (MSR_IR|MSR_SF))
return 0;
......@@ -582,7 +582,7 @@ int xmon_iabr_match(struct pt_regs *regs)
return 1;
}
int xmon_ipi(struct pt_regs *regs)
static int xmon_ipi(struct pt_regs *regs)
{
#ifdef CONFIG_SMP
if (in_xmon && !cpu_isset(smp_processor_id(), cpus_in_xmon))
......@@ -591,7 +591,7 @@ int xmon_ipi(struct pt_regs *regs)
return 0;
}
int xmon_fault_handler(struct pt_regs *regs)
static int xmon_fault_handler(struct pt_regs *regs)
{
struct bpt *bp;
unsigned long offset;
......
......@@ -13,7 +13,6 @@ extra-$(CONFIG_POWER4) += idle_power4.o
extra-y += vmlinux.lds
obj-y := entry.o traps.o idle.o time.o misc.o \
process.o \
setup.o \
ppc_htab.o
obj-$(CONFIG_6xx) += l2cr.o cpu_setup_6xx.o
......
This diff is collapsed.
......@@ -293,6 +293,7 @@ static int send_request(struct request *req)
u16 viocmd;
HvLpEvent_Rc hvrc;
struct vioblocklpevent *bevent;
struct HvLpEvent *hev;
struct scatterlist sg[VIOMAXBLOCKDMA];
int sgindex;
int statindex;
......@@ -347,22 +348,19 @@ static int send_request(struct request *req)
* token so we can match the response up later
*/
memset(bevent, 0, sizeof(struct vioblocklpevent));
bevent->event.xFlags.xValid = 1;
bevent->event.xFlags.xFunction = HvLpEvent_Function_Int;
bevent->event.xFlags.xAckInd = HvLpEvent_AckInd_DoAck;
bevent->event.xFlags.xAckType = HvLpEvent_AckType_ImmediateAck;
bevent->event.xType = HvLpEvent_Type_VirtualIo;
bevent->event.xSubtype = viocmd;
bevent->event.xSourceLp = HvLpConfig_getLpIndex();
bevent->event.xTargetLp = viopath_hostLp;
bevent->event.xSizeMinus1 =
hev = &bevent->event;
hev->flags = HV_LP_EVENT_VALID | HV_LP_EVENT_DO_ACK |
HV_LP_EVENT_INT;
hev->xType = HvLpEvent_Type_VirtualIo;
hev->xSubtype = viocmd;
hev->xSourceLp = HvLpConfig_getLpIndex();
hev->xTargetLp = viopath_hostLp;
hev->xSizeMinus1 =
offsetof(struct vioblocklpevent, u.rw_data.dma_info) +
(sizeof(bevent->u.rw_data.dma_info[0]) * nsg) - 1;
bevent->event.xSourceInstanceId =
viopath_sourceinst(viopath_hostLp);
bevent->event.xTargetInstanceId =
viopath_targetinst(viopath_hostLp);
bevent->event.xCorrelationToken = (u64)req;
hev->xSourceInstanceId = viopath_sourceinst(viopath_hostLp);
hev->xTargetInstanceId = viopath_targetinst(viopath_hostLp);
hev->xCorrelationToken = (u64)req;
bevent->version = VIOVERSION;
bevent->disk = DEVICE_NO(d);
bevent->u.rw_data.offset = start;
......@@ -649,10 +647,10 @@ static void handle_block_event(struct HvLpEvent *event)
/* Notification that a partition went away! */
return;
/* First, we should NEVER get an int here...only acks */
if (event->xFlags.xFunction == HvLpEvent_Function_Int) {
if (hvlpevent_is_int(event)) {
printk(VIOD_KERN_WARNING
"Yikes! got an int in viodasd event handler!\n");
if (event->xFlags.xAckInd == HvLpEvent_AckInd_DoAck) {
if (hvlpevent_need_ack(event)) {
event->xRc = HvLpEvent_Rc_InvalidSubtype;
HvCallEvent_ackLpEvent(event);
}
......@@ -695,7 +693,7 @@ static void handle_block_event(struct HvLpEvent *event)
default:
printk(VIOD_KERN_WARNING "invalid subtype!");
if (event->xFlags.xAckInd == HvLpEvent_AckInd_DoAck) {
if (hvlpevent_need_ack(event)) {
event->xRc = HvLpEvent_Rc_InvalidSubtype;
HvCallEvent_ackLpEvent(event);
}
......
......@@ -542,10 +542,10 @@ static void vio_handle_cd_event(struct HvLpEvent *event)
/* Notification that a partition went away! */
return;
/* First, we should NEVER get an int here...only acks */
if (event->xFlags.xFunction == HvLpEvent_Function_Int) {
if (hvlpevent_is_int(event)) {
printk(VIOCD_KERN_WARNING
"Yikes! got an int in viocd event handler!\n");
if (event->xFlags.xAckInd == HvLpEvent_AckInd_DoAck) {
if (hvlpevent_need_ack(event)) {
event->xRc = HvLpEvent_Rc_InvalidSubtype;
HvCallEvent_ackLpEvent(event);
}
......@@ -616,7 +616,7 @@ return_complete:
printk(VIOCD_KERN_WARNING
"message with invalid subtype %0x04X!\n",
event->xSubtype & VIOMINOR_SUBTYPE_MASK);
if (event->xFlags.xAckInd == HvLpEvent_AckInd_DoAck) {
if (hvlpevent_need_ack(event)) {
event->xRc = HvLpEvent_Rc_InvalidSubtype;
HvCallEvent_ackLpEvent(event);
}
......
......@@ -534,7 +534,7 @@ static ssize_t write_kmem(struct file * file, const char __user * buf,
return virtr + wrote;
}
#if (defined(CONFIG_ISA) || !defined(__mc68000__)) && (!defined(CONFIG_PPC_ISERIES) || defined(CONFIG_PCI))
#if defined(CONFIG_ISA) || !defined(__mc68000__)
static ssize_t read_port(struct file * file, char __user * buf,
size_t count, loff_t *ppos)
{
......@@ -795,7 +795,7 @@ static struct file_operations null_fops = {
.write = write_null,
};
#if (defined(CONFIG_ISA) || !defined(__mc68000__)) && (!defined(CONFIG_PPC_ISERIES) || defined(CONFIG_PCI))
#if defined(CONFIG_ISA) || !defined(__mc68000__)
static struct file_operations port_fops = {
.llseek = memory_lseek,
.read = read_port,
......@@ -865,7 +865,7 @@ static int memory_open(struct inode * inode, struct file * filp)
case 3:
filp->f_op = &null_fops;
break;
#if (defined(CONFIG_ISA) || !defined(__mc68000__)) && (!defined(CONFIG_PPC_ISERIES) || defined(CONFIG_PCI))
#if defined(CONFIG_ISA) || !defined(__mc68000__)
case 4:
filp->f_op = &port_fops;
break;
......@@ -912,7 +912,7 @@ static const struct {
{1, "mem", S_IRUSR | S_IWUSR | S_IRGRP, &mem_fops},
{2, "kmem", S_IRUSR | S_IWUSR | S_IRGRP, &kmem_fops},
{3, "null", S_IRUGO | S_IWUGO, &null_fops},
#if (defined(CONFIG_ISA) || !defined(__mc68000__)) && (!defined(CONFIG_PPC_ISERIES) || defined(CONFIG_PCI))
#if defined(CONFIG_ISA) || !defined(__mc68000__)
{4, "port", S_IRUSR | S_IWUSR | S_IRGRP, &port_fops},
#endif
{5, "zero", S_IRUGO | S_IWUGO, &zero_fops},
......
......@@ -476,19 +476,19 @@ static struct port_info *get_port_data(struct tty_struct *tty)
*/
static void initDataEvent(struct viocharlpevent *viochar, HvLpIndex lp)
{
struct HvLpEvent *hev = &viochar->event;
memset(viochar, 0, sizeof(struct viocharlpevent));
viochar->event.xFlags.xValid = 1;
viochar->event.xFlags.xFunction = HvLpEvent_Function_Int;
viochar->event.xFlags.xAckInd = HvLpEvent_AckInd_NoAck;
viochar->event.xFlags.xAckType = HvLpEvent_AckType_DeferredAck;
viochar->event.xType = HvLpEvent_Type_VirtualIo;
viochar->event.xSubtype = viomajorsubtype_chario | viochardata;
viochar->event.xSourceLp = HvLpConfig_getLpIndex();
viochar->event.xTargetLp = lp;
viochar->event.xSizeMinus1 = sizeof(struct viocharlpevent);
viochar->event.xSourceInstanceId = viopath_sourceinst(lp);
viochar->event.xTargetInstanceId = viopath_targetinst(lp);
hev->flags = HV_LP_EVENT_VALID | HV_LP_EVENT_DEFERRED_ACK |
HV_LP_EVENT_INT;
hev->xType = HvLpEvent_Type_VirtualIo;
hev->xSubtype = viomajorsubtype_chario | viochardata;
hev->xSourceLp = HvLpConfig_getLpIndex();
hev->xTargetLp = lp;
hev->xSizeMinus1 = sizeof(struct viocharlpevent);
hev->xSourceInstanceId = viopath_sourceinst(lp);
hev->xTargetInstanceId = viopath_targetinst(lp);
}
/*
......@@ -752,7 +752,7 @@ static void vioHandleOpenEvent(struct HvLpEvent *event)
struct port_info *pi;
int reject = 0;
if (event->xFlags.xFunction == HvLpEvent_Function_Ack) {
if (hvlpevent_is_ack(event)) {
if (port >= VTTY_PORTS)
return;
......@@ -788,7 +788,7 @@ static void vioHandleOpenEvent(struct HvLpEvent *event)
}
/* This had better require an ack, otherwise complain */
if (event->xFlags.xAckInd != HvLpEvent_AckInd_DoAck) {
if (!hvlpevent_need_ack(event)) {
printk(VIOCONS_KERN_WARN "viocharopen without ack bit!\n");
return;
}
......@@ -856,7 +856,7 @@ static void vioHandleCloseEvent(struct HvLpEvent *event)
struct viocharlpevent *cevent = (struct viocharlpevent *)event;
u8 port = cevent->virtual_device;
if (event->xFlags.xFunction == HvLpEvent_Function_Int) {
if (hvlpevent_is_int(event)) {
if (port >= VTTY_PORTS) {
printk(VIOCONS_KERN_WARN
"close message from invalid virtual device.\n");
......@@ -1056,8 +1056,7 @@ static void vioHandleCharEvent(struct HvLpEvent *event)
vioHandleConfig(event);
break;
default:
if ((event->xFlags.xFunction == HvLpEvent_Function_Int) &&
(event->xFlags.xAckInd == HvLpEvent_AckInd_DoAck)) {
if (hvlpevent_is_int(event) && hvlpevent_need_ack(event)) {
event->xRc = HvLpEvent_Rc_InvalidSubtype;
HvCallEvent_ackLpEvent(event);
}
......
......@@ -590,9 +590,9 @@ static void veth_handle_event(struct HvLpEvent *event, struct pt_regs *regs)
{
struct veth_lpevent *veth_event = (struct veth_lpevent *)event;
if (event->xFlags.xFunction == HvLpEvent_Function_Ack)
if (hvlpevent_is_ack(event))
veth_handle_ack(veth_event);
else if (event->xFlags.xFunction == HvLpEvent_Function_Int)
else
veth_handle_int(veth_event);
}
......
......@@ -64,25 +64,6 @@ extern void iommu_free_table(struct device_node *dn);
#endif /* CONFIG_PPC_MULTIPLATFORM */
#ifdef CONFIG_PPC_PSERIES
/* Creates table for an individual device node */
extern void iommu_devnode_init_pSeries(struct device_node *dn);
#endif /* CONFIG_PPC_PSERIES */
#ifdef CONFIG_PPC_ISERIES
/* Creates table for an individual device node */
extern void iommu_devnode_init_iSeries(struct device_node *dn);
/* Get table parameters from HV */
extern void iommu_table_getparms_iSeries(unsigned long busno,
unsigned char slotno,
unsigned char virtbus,
struct iommu_table* tbl);
#endif /* CONFIG_PPC_ISERIES */
/* Initializes an iommu_table based in values set in the passed-in
* structure
*/
......
/*
* HvCall.h
* Copyright (C) 2001 Mike Corrigan IBM Corporation
*
* This program is free software; you can redistribute it and/or modify
......@@ -15,8 +14,7 @@
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/*
*
* This file contains the "hypervisor call" interface which is used to
* drive the hypervisor from the OS.
*/
......
/*
* HvCallEvent.h
* Copyright (C) 2001 Mike Corrigan IBM Corporation
*
* This program is free software; you can redistribute it and/or modify
......@@ -15,8 +14,7 @@
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/*
*
* This file contains the "hypervisor call" interface which is used to
* drive the hypervisor from the OS.
*/
......@@ -33,32 +31,9 @@ typedef u8 HvLpEvent_Type;
typedef u8 HvLpEvent_AckInd;
typedef u8 HvLpEvent_AckType;
struct HvCallEvent_PackedParms {
u8 xAckType:1;
u8 xAckInd:1;
u8 xRsvd:1;
u8 xTargetLp:5;
u8 xType;
u16 xSubtype;
HvLpInstanceId xSourceInstId;
HvLpInstanceId xTargetInstId;
};
typedef u8 HvLpDma_Direction;
typedef u8 HvLpDma_AddressType;
struct HvCallEvent_PackedDmaParms {
u8 xDirection:1;
u8 xLocalAddrType:1;
u8 xRemoteAddrType:1;
u8 xRsvd1:5;
HvLpIndex xRemoteLp;
u8 xType;
u8 xRsvd2;
HvLpInstanceId xLocalInstId;
HvLpInstanceId xRemoteInstId;
};
typedef u64 HvLpEvent_Rc;
typedef u64 HvLpDma_Rc;
......@@ -92,11 +67,8 @@ static inline void HvCallEvent_setInterLpQueueIndex(u8 queueIndex)
static inline void HvCallEvent_setLpEventStack(u8 queueIndex,
char *eventStackAddr, u32 eventStackSize)
{
u64 abs_addr;
abs_addr = virt_to_abs(eventStackAddr);
HvCall3(HvCallEventSetLpEventStack, queueIndex, abs_addr,
eventStackSize);
HvCall3(HvCallEventSetLpEventStack, queueIndex,
virt_to_abs(eventStackAddr), eventStackSize);
}
static inline void HvCallEvent_setLpEventQueueInterruptProc(u8 queueIndex,
......@@ -108,14 +80,7 @@ static inline void HvCallEvent_setLpEventQueueInterruptProc(u8 queueIndex,
static inline HvLpEvent_Rc HvCallEvent_signalLpEvent(struct HvLpEvent *event)
{
u64 abs_addr;
#ifdef DEBUG_SENDEVENT
printk("HvCallEvent_signalLpEvent: *event = %016lx\n ",
(unsigned long)event);
#endif
abs_addr = virt_to_abs(event);
return HvCall1(HvCallEventSignalLpEvent, abs_addr);
return HvCall1(HvCallEventSignalLpEvent, virt_to_abs(event));
}
static inline HvLpEvent_Rc HvCallEvent_signalLpEventFast(HvLpIndex targetLp,
......@@ -127,17 +92,21 @@ static inline HvLpEvent_Rc HvCallEvent_signalLpEventFast(HvLpIndex targetLp,
{
/* Pack the misc bits into a single Dword to pass to PLIC */
union {
struct HvCallEvent_PackedParms parms;
struct {
u8 ack_and_target;
u8 type;
u16 subtype;
HvLpInstanceId src_inst;
HvLpInstanceId target_inst;
} parms;
u64 dword;
} packed;
packed.parms.xAckType = ackType;
packed.parms.xAckInd = ackInd;
packed.parms.xRsvd = 0;
packed.parms.xTargetLp = targetLp;
packed.parms.xType = type;
packed.parms.xSubtype = subtype;
packed.parms.xSourceInstId = sourceInstanceId;
packed.parms.xTargetInstId = targetInstanceId;
packed.parms.ack_and_target = (ackType << 7) | (ackInd << 6) | targetLp;
packed.parms.type = type;
packed.parms.subtype = subtype;
packed.parms.src_inst = sourceInstanceId;
packed.parms.target_inst = targetInstanceId;
return HvCall7(HvCallEventSignalLpEventParms, packed.dword,
correlationToken, eventData1, eventData2,
......@@ -146,18 +115,12 @@ static inline HvLpEvent_Rc HvCallEvent_signalLpEventFast(HvLpIndex targetLp,
static inline HvLpEvent_Rc HvCallEvent_ackLpEvent(struct HvLpEvent *event)
{
u64 abs_addr;
abs_addr = virt_to_abs(event);
return HvCall1(HvCallEventAckLpEvent, abs_addr);
return HvCall1(HvCallEventAckLpEvent, virt_to_abs(event));
}
static inline HvLpEvent_Rc HvCallEvent_cancelLpEvent(struct HvLpEvent *event)
{
u64 abs_addr;
abs_addr = virt_to_abs(event);
return HvCall1(HvCallEventCancelLpEvent, abs_addr);
return HvCall1(HvCallEventCancelLpEvent, virt_to_abs(event));
}
static inline HvLpInstanceId HvCallEvent_getSourceLpInstanceId(
......@@ -195,59 +158,34 @@ static inline HvLpDma_Rc HvCallEvent_dmaBufList(HvLpEvent_Type type,
{
/* Pack the misc bits into a single Dword to pass to PLIC */
union {
struct HvCallEvent_PackedDmaParms parms;
struct {
u8 flags;
HvLpIndex remote;
u8 type;
u8 reserved;
HvLpInstanceId local_inst;
HvLpInstanceId remote_inst;
} parms;
u64 dword;
} packed;
packed.parms.xDirection = direction;
packed.parms.xLocalAddrType = localAddressType;
packed.parms.xRemoteAddrType = remoteAddressType;
packed.parms.xRsvd1 = 0;
packed.parms.xRemoteLp = remoteLp;
packed.parms.xType = type;
packed.parms.xRsvd2 = 0;
packed.parms.xLocalInstId = localInstanceId;
packed.parms.xRemoteInstId = remoteInstanceId;
packed.parms.flags = (direction << 7) |
(localAddressType << 6) | (remoteAddressType << 5);
packed.parms.remote = remoteLp;
packed.parms.type = type;
packed.parms.reserved = 0;
packed.parms.local_inst = localInstanceId;
packed.parms.remote_inst = remoteInstanceId;
return HvCall4(HvCallEventDmaBufList, packed.dword, localBufList,
remoteBufList, transferLength);
}
static inline HvLpDma_Rc HvCallEvent_dmaSingle(HvLpEvent_Type type,
HvLpIndex remoteLp, HvLpDma_Direction direction,
HvLpInstanceId localInstanceId,
HvLpInstanceId remoteInstanceId,
HvLpDma_AddressType localAddressType,
HvLpDma_AddressType remoteAddressType,
u64 localAddrOrTce, u64 remoteAddrOrTce, u32 transferLength)
{
/* Pack the misc bits into a single Dword to pass to PLIC */
union {
struct HvCallEvent_PackedDmaParms parms;
u64 dword;
} packed;