memblock_end_of_DRAM() return end address + 1

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi All,

memblock_end_of_DRAM() defined in mm/memblock.c returns base_address + size;
So this is not returning the end_of_DRAM, it is basically returning the end_of_DRAM + 1. The name looks to suggest that this returns end address on DRAM.

IIUC, it looks like that some code assumes this returns the end address while some assumes this returns end address + 1.

Example:
1. arch/powerpc/platforms/85xx/mpc85xx_ds.c


<cut>

#ifdef CONFIG_SWIOTLB
        if (memblock_end_of_DRAM() > max) {
                ppc_swiotlb_enable = 1;
                set_pci_dma_ops(&swiotlb_dma_ops);
                ppc_md.pci_dma_dev_setup = pci_dma_dev_setup_swiotlb;
        }
#endif

<cut>
<cut>


Where  max = 0xffffffff; So we assumes that memblock_end_of_DRAM() actually returns end address.

------
2.

In arch/powerpc/kernel/dma.c


static int dma_direct_dma_supported(struct device *dev, u64 mask)
{
#ifdef CONFIG_PPC64
        /* Could be improved so platforms can set the limit in case
         * they have limited DMA windows
         */
        return mask >= get_dma_offset(dev) + (memblock_end_of_DRAM() - 1);


<cut>

It looks to that here we assume base + addr + 1;

-----------


Thanks
-Bharat


--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@xxxxxxxxx.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href


[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]