This patch adds checking for allocated memory
which is used to hold AGP info. Also some whitespace
cleanup.

Signed-off-by: Cyrill Gorcunov <[EMAIL PROTECTED]>

---

 arch/alpha/kernel/core_marvel.c |  137 ++++++++++++++++++++-------------------
 1 files changed, 71 insertions(+), 66 deletions(-)

diff --git a/arch/alpha/kernel/core_marvel.c b/arch/alpha/kernel/core_marvel.c
index 7f6a984..9f6d1a2 100644
--- a/arch/alpha/kernel/core_marvel.c
+++ b/arch/alpha/kernel/core_marvel.c
@@ -29,7 +29,7 @@
 #include "proto.h"
 #include "pci_impl.h"
 
-
+
 /*
  * Debug helpers
  */
@@ -41,13 +41,13 @@
 # define DBG_CFG(args)
 #endif
 
-
+
 /*
  * Private data
  */
 static struct io7 *io7_head = NULL;
 
-
+
 /*
  * Helper functions
  */
@@ -79,7 +79,7 @@ mk_resource_name(int pe, int port, char *str)
 {
        char tmp[80];
        char *name;
-       
+
        sprintf(tmp, "PCI %s PE %d PORT %d", str, pe, port);
        name = alloc_bootmem(strlen(tmp) + 1);
        strcpy(name, tmp);
@@ -130,19 +130,19 @@ alloc_io7(unsigned int pe)
         * Insert in pe sorted order.
         */
        if (NULL == io7_head)                   /* empty list */
-               io7_head = io7; 
+               io7_head = io7;
        else if (io7_head->pe > io7->pe) {      /* insert at head */
                io7->next = io7_head;
                io7_head = io7;
        } else {                                /* insert at position */
                for (insp = io7_head; insp; insp = insp->next) {
                        if (insp->pe == io7->pe) {
-                               printk(KERN_ERR "Too many IO7s at PE %d\n", 
+                               printk(KERN_ERR "Too many IO7s at PE %d\n",
                                       io7->pe);
                                return NULL;
                        }
 
-                       if (NULL == insp->next || 
+                       if (NULL == insp->next ||
                            insp->next->pe > io7->pe) { /* insert here */
                                io7->next = insp->next;
                                insp->next = io7;
@@ -157,7 +157,7 @@ alloc_io7(unsigned int pe)
                        io7_head = io7;
                }
        }
-       
+
        return io7;
 }
 
@@ -191,7 +191,7 @@ io7_clear_errors(struct io7 *io7)
        p7csrs->PO7_CRRCT_SYM.csr = -1UL;
 }
 
-
+
 /*
  * IO7 PCI, PCI/X, AGP configuration.
  */
@@ -206,11 +206,11 @@ io7_init_hose(struct io7 *io7, int port)
        int i;
 
        hose->index = hose_index++;     /* arbitrary */
-       
+
        /*
         * We don't have an isa or legacy hose, but glibc expects to be
         * able to use the bus == 0 / dev == 0 form of the iobase syscall
-        * to determine information about the i/o system. Since XFree86 
+        * to determine information about the i/o system. Since XFree86
         * relies on glibc's determination to tell whether or not to use
         * sparse access, we need to point the pci_isa_hose at a real hose
         * so at least that determination is correct.
@@ -249,10 +249,10 @@ io7_init_hose(struct io7 *io7, int port)
        hose->mem_space->flags = IORESOURCE_MEM;
 
        if (request_resource(&ioport_resource, hose->io_space) < 0)
-               printk(KERN_ERR "Failed to request IO on hose %d\n", 
+               printk(KERN_ERR "Failed to request IO on hose %d\n",
                       hose->index);
        if (request_resource(&iomem_resource, hose->mem_space) < 0)
-               printk(KERN_ERR "Failed to request MEM on hose %d\n", 
+               printk(KERN_ERR "Failed to request MEM on hose %d\n",
                       hose->index);
 
        /*
@@ -284,7 +284,7 @@ io7_init_hose(struct io7 *io7, int port)
        hose->sg_isa = iommu_arena_new_node(marvel_cpuid_to_nid(io7->pe),
                                            hose, 0x00800000, 0x00800000, 0);
        hose->sg_isa->align_entry = 8;  /* cache line boundary */
-       csrs->POx_WBASE[0].csr = 
+       csrs->POx_WBASE[0].csr =
                hose->sg_isa->dma_base | wbase_m_ena | wbase_m_sg;
        csrs->POx_WMASK[0].csr = (hose->sg_isa->size - 1) & wbase_m_addr;
        csrs->POx_TBASE[0].csr = virt_to_phys(hose->sg_isa->ptes);
@@ -302,7 +302,7 @@ io7_init_hose(struct io7 *io7, int port)
        hose->sg_pci = iommu_arena_new_node(marvel_cpuid_to_nid(io7->pe),
                                            hose, 0xc0000000, 0x40000000, 0);
        hose->sg_pci->align_entry = 8;  /* cache line boundary */
-       csrs->POx_WBASE[2].csr = 
+       csrs->POx_WBASE[2].csr =
                hose->sg_pci->dma_base | wbase_m_ena | wbase_m_sg;
        csrs->POx_WMASK[2].csr = (hose->sg_pci->size - 1) & wbase_m_addr;
        csrs->POx_TBASE[2].csr = virt_to_phys(hose->sg_pci->ptes);
@@ -357,7 +357,7 @@ marvel_io7_present(gct6_node *node)
        int pe;
 
        if (node->type != GCT_TYPE_HOSE ||
-           node->subtype != GCT_SUBTYPE_IO_PORT_MODULE) 
+           node->subtype != GCT_SUBTYPE_IO_PORT_MODULE)
                return;
 
        pe = (node->id >> 8) & 0xff;
@@ -380,7 +380,7 @@ marvel_init_vga_hose(void)
 
                /* FIXME - encoding is going to have to change for Marvel
                 *         since hose will be able to overflow a byte...
-                *         need to fix this decode when the console 
+                *         need to fix this decode when the console
                 *         changes its encoding
                 */
                printk("console graphics is on hose %d (console)\n", h);
@@ -455,7 +455,7 @@ marvel_init_arch(void)
        gct6_find_nodes(GCT_NODE_PTR(0), gct_wanted_node_list);
 
        /* Init the io7s.  */
-       for (io7 = NULL; NULL != (io7 = marvel_next_io7(io7)); ) 
+       for (io7 = NULL; NULL != (io7 = marvel_next_io7(io7)); )
                marvel_init_io7(io7);
 
        /* Check for graphic console location (if any).  */
@@ -467,13 +467,13 @@ marvel_kill_arch(int mode)
 {
 }
 
-
+
 /*
  * PCI Configuration Space access functions
  *
  * Configuration space addresses have the following format:
  *
- *     |2 2 2 2|1 1 1 1|1 1 1 1|1 1 
+ *     |2 2 2 2|1 1 1 1|1 1 1 1|1 1
  *     |3 2 1 0|9 8 7 6|5 4 3 2|1 0 9 8|7 6 5 4|3 2 1 0
  *     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  *     |B|B|B|B|B|B|B|B|D|D|D|D|D|F|F|F|R|R|R|R|R|R|R|R|
@@ -484,19 +484,19 @@ marvel_kill_arch(int mode)
  *     15:11   Device number (5 bits)
  *     10:8    function number
  *      7:2    register number
- *  
+ *
  * Notes:
  *     IO7 determines whether to use a type 0 or type 1 config cycle
- *     based on the bus number. Therefore the bus number must be set 
+ *     based on the bus number. Therefore the bus number must be set
  *     to 0 for the root bus on any hose.
- *     
- *     The function number selects which function of a multi-function device 
+ *
+ *     The function number selects which function of a multi-function device
  *     (e.g., SCSI and Ethernet).
- * 
+ *
  */
 
 static inline unsigned long
-build_conf_addr(struct pci_controller *hose, u8 bus, 
+build_conf_addr(struct pci_controller *hose, u8 bus,
                unsigned int devfn, int where)
 {
        return (hose->config_space_base | (bus << 16) | (devfn << 8) | where);
@@ -536,18 +536,18 @@ marvel_read_config(struct pci_bus *bus, unsigned int 
devfn, int where,
                   int size, u32 *value)
 {
        unsigned long addr;
-       
+
        if (0 == (addr = mk_conf_addr(bus, devfn, where)))
                return PCIBIOS_DEVICE_NOT_FOUND;
 
        switch(size) {
-       case 1: 
+       case 1:
                *value = __kernel_ldbu(*(vucp)addr);
                break;
-       case 2: 
+       case 2:
                *value = __kernel_ldwu(*(vusp)addr);
                break;
-       case 4: 
+       case 4:
                *value = *(vuip)addr;
                break;
        default:
@@ -562,7 +562,7 @@ marvel_write_config(struct pci_bus *bus, unsigned int 
devfn, int where,
                    int size, u32 value)
 {
        unsigned long addr;
-       
+
        if (0 == (addr = mk_conf_addr(bus, devfn, where)))
                return PCIBIOS_DEVICE_NOT_FOUND;
 
@@ -595,7 +595,7 @@ struct pci_ops marvel_pci_ops =
        .write =        marvel_write_config,
 };
 
-
+
 /*
  * Other PCI helper functions.
  */
@@ -610,8 +610,8 @@ marvel_pci_tbi(struct pci_controller *hose, dma_addr_t 
start, dma_addr_t end)
        csrs->POx_SG_TBIA.csr;
 }
 
-
-
+
+
 /*
  * RTC Support
  */
@@ -630,7 +630,7 @@ __marvel_access_rtc(void *info)
        register unsigned long __r16 __asm__("$16") = rtc_access->function;
        register unsigned long __r17 __asm__("$17") = rtc_access->index;
        register unsigned long __r18 __asm__("$18") = rtc_access->data;
-       
+
        __asm__ __volatile__(
                "call_pal %4 # cserve rtc"
                : "=r"(__r16), "=r"(__r17), "=r"(__r18), "=r"(__r0)
@@ -680,7 +680,7 @@ __marvel_rtc_io(u8 b, unsigned long addr, int write)
        return ret;
 }
 
-
+
 /*
  * IO map support.
  */
@@ -699,7 +699,7 @@ marvel_ioremap(unsigned long addr, unsigned long size)
 
        /*
         * Adjust the addr.
-        */ 
+        */
 #ifdef CONFIG_VGA_HOSE
        if (pci_vga_hose && __marvel_is_mem_vga(addr)) {
                addr += pci_vga_hose->mem_space->start;
@@ -711,7 +711,7 @@ marvel_ioremap(unsigned long addr, unsigned long size)
         */
        for (hose = hose_head; hose; hose = hose->next) {
                if ((addr >> 32) == (hose->mem_space->start >> 32))
-                       break; 
+                       break;
        }
        if (!hose)
                return NULL;
@@ -725,13 +725,13 @@ marvel_ioremap(unsigned long addr, unsigned long size)
        /*
         * Is it direct-mapped?
         */
-       if ((baddr >= __direct_map_base) && 
+       if ((baddr >= __direct_map_base) &&
            ((baddr + size - 1) < __direct_map_base + __direct_map_size)) {
                addr = IDENT_ADDR | (baddr - __direct_map_base);
                return (void __iomem *) addr;
        }
 
-       /* 
+       /*
         * Check the scatter-gather arena.
         */
        if (hose->sg_pci &&
@@ -754,8 +754,8 @@ marvel_ioremap(unsigned long addr, unsigned long size)
                        return NULL;
 
                ptes = hose->sg_pci->ptes;
-               for (vaddr = (unsigned long)area->addr; 
-                   baddr <= last; 
+               for (vaddr = (unsigned long)area->addr;
+                   baddr <= last;
                    baddr += PAGE_SIZE, vaddr += PAGE_SIZE) {
                        pfn = ptes[baddr >> PAGE_SHIFT];
                        if (!(pfn & 1)) {
@@ -764,9 +764,9 @@ marvel_ioremap(unsigned long addr, unsigned long size)
                                return NULL;
                        }
                        pfn >>= 1;      /* make it a true pfn */
-                       
+
                        if (__alpha_remap_area_pages(vaddr,
-                                                    pfn << PAGE_SHIFT, 
+                                                    pfn << PAGE_SHIFT,
                                                     PAGE_SIZE, 0)) {
                                printk("FAILED to map...\n");
                                vfree(area->addr);
@@ -789,7 +789,7 @@ marvel_iounmap(volatile void __iomem *xaddr)
 {
        unsigned long addr = (unsigned long) xaddr;
        if (addr >= VMALLOC_START)
-               vfree((void *)(PAGE_MASK & addr)); 
+               vfree((void *)(PAGE_MASK & addr));
 }
 
 int
@@ -839,7 +839,7 @@ marvel_iowrite8(u8 b, void __iomem *xaddr)
        unsigned long addr = (unsigned long) xaddr;
        if (__marvel_is_port_kbd(addr))
                return;
-       else if (__marvel_is_port_rtc(addr)) 
+       else if (__marvel_is_port_rtc(addr))
                __marvel_rtc_io(b, addr, 1);
        else
                __kernel_stb(b, *(vucp)addr);
@@ -853,13 +853,13 @@ EXPORT_SYMBOL(marvel_ioportmap);
 EXPORT_SYMBOL(marvel_ioread8);
 EXPORT_SYMBOL(marvel_iowrite8);
 #endif
-
+
 /*
  * NUMA Support
  */
 /**********
- * FIXME - for now each cpu is a node by itself 
- *              -- no real support for striped mode 
+ * FIXME - for now each cpu is a node by itself
+ *              -- no real support for striped mode
  **********
  */
 int
@@ -867,7 +867,7 @@ marvel_pa_to_nid(unsigned long pa)
 {
        int cpuid;
 
-       if ((pa >> 43) & 1)     /* I/O */ 
+       if ((pa >> 43) & 1)     /* I/O */
                cpuid = (~(pa >> 35) & 0xff);
        else                    /* mem */
                cpuid = ((pa >> 34) & 0x3) | ((pa >> (37 - 2)) & (0x1f << 2));
@@ -898,8 +898,8 @@ marvel_node_mem_size(int nid)
        return 16UL * 1024 * 1024 * 1024; /* 16GB */
 }
 
-
-/* 
+
+/*
  * AGP GART Support.
  */
 #include <linux/agp_backend.h>
@@ -935,7 +935,7 @@ marvel_agp_setup(alpha_agp_info *agp)
                return -ENOMEM;
        }
 
-       agp->aperture.bus_base = 
+       agp->aperture.bus_base =
                aper->arena->dma_base + aper->pg_start * PAGE_SIZE;
        agp->aperture.size = aper->pg_count * PAGE_SIZE;
        agp->aperture.sysdata = aper;
@@ -954,7 +954,7 @@ marvel_agp_cleanup(alpha_agp_info *agp)
                printk(KERN_WARNING
                       "Attempted to release bound AGP memory - unbinding\n");
                iommu_unbind(aper->arena, aper->pg_start, aper->pg_count);
-               status = iommu_release(aper->arena, aper->pg_start, 
+               status = iommu_release(aper->arena, aper->pg_start,
                                       aper->pg_count);
        }
        if (status < 0)
@@ -980,11 +980,11 @@ marvel_agp_configure(alpha_agp_info *agp)
        agp_pll = io7->csrs->POx_RST[IO7_AGP_PORT].csr;
        switch(IO7_PLL_RNGB(agp_pll)) {
        case 0x4:                               /* 2x only */
-               /* 
+               /*
                 * The PLL is only programmed for 2x, so adjust the
                 * rate to 2x, if necessary.
                 */
-               if (agp->mode.bits.rate != 2) 
+               if (agp->mode.bits.rate != 2)
                        new_rate = 2;
                break;
 
@@ -993,7 +993,7 @@ marvel_agp_configure(alpha_agp_info *agp)
                 * The PLL is programmed for 1x or 4x.  Don't go faster
                 * than requested, so if the requested rate is 2x, use 1x.
                 */
-               if (agp->mode.bits.rate == 2) 
+               if (agp->mode.bits.rate == 2)
                        new_rate = 1;
                break;
 
@@ -1018,9 +1018,9 @@ marvel_agp_configure(alpha_agp_info *agp)
 
                agp->mode.bits.rate = new_rate;
        }
-               
-       printk("Enabling AGP on hose %d: %dX%s RQ %d\n", 
-              agp->hose->index, agp->mode.bits.rate, 
+
+       printk("Enabling AGP on hose %d: %dX%s RQ %d\n",
+              agp->hose->index, agp->mode.bits.rate,
               agp->mode.bits.sba ? " - SBA" : "", agp->mode.bits.rq);
 
        csrs->AGP_CMD.csr = agp->mode.lw;
@@ -1028,15 +1028,15 @@ marvel_agp_configure(alpha_agp_info *agp)
        return 0;
 }
 
-static int 
+static int
 marvel_agp_bind_memory(alpha_agp_info *agp, off_t pg_start, struct agp_memory 
*mem)
 {
        struct marvel_agp_aperture *aper = agp->aperture.sysdata;
-       return iommu_bind(aper->arena, aper->pg_start + pg_start, 
+       return iommu_bind(aper->arena, aper->pg_start + pg_start,
                          mem->page_count, mem->memory);
 }
 
-static int 
+static int
 marvel_agp_unbind_memory(alpha_agp_info *agp, off_t pg_start, struct 
agp_memory *mem)
 {
        struct marvel_agp_aperture *aper = agp->aperture.sysdata;
@@ -1061,7 +1061,7 @@ marvel_agp_translate(alpha_agp_info *agp, dma_addr_t addr)
        if (!(pte & 1)) {
                printk("%s: pte not valid\n", __FUNCTION__);
                return -EINVAL;
-       } 
+       }
        return (pte >> 1) << PAGE_SHIFT;
 }
 
@@ -1111,7 +1111,7 @@ marvel_agp_info(void)
 
        printk("MARVEL - using hose %d as AGP\n", hose->index);
 
-       /* 
+       /*
         * Get the csrs from the hose.
         */
        csrs = ((struct io7_port *)hose->sysdata)->csrs;
@@ -1120,6 +1120,11 @@ marvel_agp_info(void)
         * Allocate the info structure.
         */
        agp = kmalloc(sizeof(*agp), GFP_KERNEL);
+       if (agp == NULL) {
+               printk(KERN_ERR "MARVEL - cannot allocate struct of size %d 
bytes\n",
+                      sizeof(*agp));
+               return NULL;
+       }
 
        /*
         * Fill it in.
@@ -1144,7 +1149,7 @@ marvel_agp_info(void)
         */
        agp->capability.lw = csrs->AGP_STAT.csr;
        agp->capability.bits.rq = 0xf;
-       
+
        /*
         * Mode.
         */
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to