Re: Help with a bug in mmap

2018-11-01 Thread Izumi Tsutsui
jmcneill@ wrote:

> On Wed, 31 Oct 2018, Taylor R Campbell wrote:
> 
> > For the moment, as a provisional workaround to make progress, you can
> > probably get by with `pa << PGSHIFT', where pa is the physical (byte)
> 
> I think this should be `pa >> PGSHIFT`, or even better use `atop(pa)`.

Some MACHINE_ARCHs use paddr_t for an mmap cookie:

https://nxr.netbsd.org/xref/src/sys/dev/usb/udl.c?r=1.22#675
---
675 /* XXX we need MI paddr_t -> mmap cookie API */
676 #if defined(__aarch64__)
677 #define PTOMMAP(paddr)  aarch64_btop((char *)paddr)
678 #elif defined(__alpha__)
679 #define PTOMMAP(paddr)  alpha_btop((char *)paddr)
680 #elif defined(__arm__)
681 #define PTOMMAP(paddr)  arm_btop((u_long)paddr)
682 #elif defined(__hppa__)
683 #define PTOMMAP(paddr)  btop((u_long)paddr)
684 #elif defined(__i386__) || defined(__x86_64__)
685 #define PTOMMAP(paddr)  x86_btop(paddr)
686 #elif defined(__m68k__)
687 #define PTOMMAP(paddr)  m68k_btop((char *)paddr)
688 #elif defined(__mips__)
689 #define PTOMMAP(paddr)  mips_btop(paddr)
690 #elif defined(__powerpc__)
691 #define PTOMMAP(paddr)  (paddr)
692 #elif defined(__sh__)
693 #define PTOMMAP(paddr)  sh3_btop(paddr)
694 #elif defined(__sparc__)
695 #define PTOMMAP(paddr)  (paddr)
696 #elif defined(__sparc64__)
697 #define PTOMMAP(paddr)  atop(paddr)
698 #elif defined(__vax__)
699 #define PTOMMAP(paddr)  btop((u_int)paddr)
700 #endif
701 
702 return PTOMMAP(paddr);
---
Izumi Tsutsui


Re: Help with a bug in mmap

2018-11-01 Thread Kamil Rytarowski
On 01.11.2018 12:34, Izumi Tsutsui wrote:
> jmcneill@ wrote:
> 
>> On Wed, 31 Oct 2018, Taylor R Campbell wrote:
>>
>>> For the moment, as a provisional workaround to make progress, you can
>>> probably get by with `pa << PGSHIFT', where pa is the physical (byte)
>>
>> I think this should be `pa >> PGSHIFT`, or even better use `atop(pa)`.
> 
> Some MACHINE_ARCHs use paddr_t for an mmap cookie:
> 
> https://nxr.netbsd.org/xref/src/sys/dev/usb/udl.c?r=1.22#675
> ---
> 675   /* XXX we need MI paddr_t -> mmap cookie API */
> 676 #if defined(__aarch64__)
> 677 #define PTOMMAP(paddr)aarch64_btop((char *)paddr)
> 678 #elif defined(__alpha__)
> 679 #define PTOMMAP(paddr)alpha_btop((char *)paddr)
> 680 #elif defined(__arm__)
> 681 #define PTOMMAP(paddr)arm_btop((u_long)paddr)
> 682 #elif defined(__hppa__)
> 683 #define PTOMMAP(paddr)btop((u_long)paddr)
> 684 #elif defined(__i386__) || defined(__x86_64__)
> 685 #define PTOMMAP(paddr)x86_btop(paddr)
> 686 #elif defined(__m68k__)
> 687 #define PTOMMAP(paddr)m68k_btop((char *)paddr)
> 688 #elif defined(__mips__)
> 689 #define PTOMMAP(paddr)mips_btop(paddr)
> 690 #elif defined(__powerpc__)
> 691 #define PTOMMAP(paddr)(paddr)
> 692 #elif defined(__sh__)
> 693 #define PTOMMAP(paddr)sh3_btop(paddr)
> 694 #elif defined(__sparc__)

This should be defined(__sparc__) && !defined(__sparc64__) otherwise
both SPARC ABIs reuse this variation.

> 695 #define PTOMMAP(paddr)(paddr)
> 696 #elif defined(__sparc64__)
> 697 #define PTOMMAP(paddr)atop(paddr)
> 698 #elif defined(__vax__)
> 699 #define PTOMMAP(paddr)btop((u_int)paddr)
> 700 #endif
> 701 
> 702   return PTOMMAP(paddr);
> ---
> Izumi Tsutsui
> 




signature.asc
Description: OpenPGP digital signature