lkml.org 
[lkml]   [2018]   [Apr]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH v4 09/15] memory: tegra: Squash tegra20-mc into common tegra-mc driver
    On Mon, Apr 09, 2018 at 10:28:31PM +0300, Dmitry Osipenko wrote:
    [...]
    > diff --git a/drivers/memory/tegra/mc.c b/drivers/memory/tegra/mc.c
    [...]
    > +#define MC_GART_ERROR_REQ 0x30
    > +#define MC_DECERR_EMEM_OTHERS_STATUS 0x58
    > +#define MC_SECURITY_VIOLATION_STATUS 0x74
    [...]
    > diff --git a/drivers/memory/tegra/mc.h b/drivers/memory/tegra/mc.h
    [...]
    > @@ -21,19 +21,30 @@
    > #define MC_INT_INVALID_SMMU_PAGE (1 << 10)
    > #define MC_INT_ARBITRATION_EMEM (1 << 9)
    > #define MC_INT_SECURITY_VIOLATION (1 << 8)
    > +#define MC_INT_INVALID_GART_PAGE (1 << 7)
    > #define MC_INT_DECERR_EMEM (1 << 6)
    >
    > static inline u32 mc_readl(struct tegra_mc *mc, unsigned long offset)
    > {
    > + if (mc->regs2 && offset >= 0x24)
    > + return readl(mc->regs2 + offset - 0x3c);

    I'm still not sure how this is supposed to work. If we pass in
    MC_GART_ERROR_REQ as offset into mc_readl(), then the condition above
    will be true (0x30 >= 0x24) but then the new offset will be computed
    and we end up with:

    return readl(mc->regs2 + 0x30 - 0x3c);

    which means we'll be adding a negative offset (or rather a very large
    offset because it will wrap around).

    Thierry
    [unhandled content-type:application/pgp-signature]
    \
     
     \ /
      Last update: 2018-04-27 11:35    [W:2.659 / U:0.232 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site