Replace two ioread32 with ioread64_lo_hi non_atomic
Ozgur Karatas
ozgurk at ieee.org
Mon Apr 25 16:38:42 EDT 2022
Hello,
since you called ioread64_lo_hi, you may have a problem with 32-bit, but
have you looked at 32-bit arch calls for ioread in the kernel?
VNSvIPortD is macro right?
On Tue, Apr 26, 2022 at 12:32 AM Philipp Hortmann <
philipp.g.hortmann at gmail.com> wrote:
> Hi,
>
> in this patch:
> [PATCH 4/5] staging: vt6655: Replace two VNSvInPortD with ioread64_lo_hi
>
> I tried to combine two reads in one.
>
> if (ww == W_MAX_TIMEOUT)
> return false;
> - VNSvInPortD(iobase + MAC_REG_TSFCNTR, (u32 *)pqwCurrTSF);
> - VNSvInPortD(iobase + MAC_REG_TSFCNTR + 4, (u32 *)pqwCurrTSF + 1);
> + *pqwCurrTSF = ioread64_lo_hi(iobase + MAC_REG_TSFCNTR);
>
> return true;
> }
>
> works fine on 64 bit machines but fails on 32 bit machines.
>
> Which of the following ways is the preferred one:
>
> Adding
> #include <linux/io-64-nonatomic-lo-hi.h>
> before #include "asm/io.h"
> But it seems that this has never been used in a driver before?
>
> Switch back to two reads with ioread32?
>
> Or another proposal?
>
> Thanks for your support.
>
> Bye Philipp
>
> _______________________________________________
> Kernelnewbies mailing list
> Kernelnewbies at kernelnewbies.org
> https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
>
--
Ozgur Kara
Linux Kernel Developer
ozgurk at ieee.org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20220426/f7edc105/attachment.html>
More information about the Kernelnewbies
mailing list