Re: [PATCH 1/1] drivers: brcmaxi: provide amba axi functionality in separate module
From: Jiri Slaby <hidden>
Date: 2011-03-29 10:45:51
Also in:
lkml
On 03/29/2011 11:40 AM, Arend van Spriel wrote:
quoted hunk ↗ jump to hunk
--- /dev/null +++ b/drivers/brcmaxi/axi.c@@ -0,0 +1,786 @@
...
quoted hunk ↗ jump to hunk
+/* resetctrl */ +#define AIRC_RESET 1 + +/* definition for specifying padding fields */ +#define _PADLINE(line) pad ## line +#define _XSTR(line) _PADLINE(line) +#define PAD _XSTR(__LINE__) + +/* + * struct aidmp - device management plugin "wrapper" registers. + */ +struct aidmp {
This looks like it should be __packed__.
quoted hunk ↗ jump to hunk
+ u32 oobselina30; /* 0x000 */ + u32 oobselina74; /* 0x004 */ + u32 PAD[6];
...
+};
...
quoted hunk ↗ jump to hunk
+struct axi_local *axi_create(u32 priv_len) +{ + struct axi_local *inst; + int size = ALIGN(sizeof(*inst), 4) + priv_len; + + inst = kzalloc(size, GFP_ATOMIC);
Hmm, ATOMIC without checking the retval. This is prepared for its first crash under a high memory pressure.
quoted hunk ↗ jump to hunk
+ try_module_get(THIS_MODULE); + + return inst; +} +struct axi_instance *axi_open(void *regs, u32 erombase, u32 priv_len) +{ + struct axi_local *inst = axi_create(priv_len); + + /* fill public fields */ + inst->pub.regs = regs; + inst->pub.priv = (char *)inst + ALIGN(sizeof(*inst), 4); + + inst->enum_rom_ptr = ioremap_nocache((unsigned long)erombase, + AXI_CORE_SIZE);
Check retval.
+ return &inst->pub; +}
... regards, -- js suse labs