Index: sys/dev/arcmsr/arcmsr.c =================================================================== --- sys/dev/arcmsr/arcmsr.c (revision 215280) +++ sys/dev/arcmsr/arcmsr.c (working copy) @@ -2470,15 +2470,11 @@ static void arcmsr_action(struct cam_sim * psim, u splx(s); } else { /* Buffer is physical */ -#ifdef PAE - panic("arcmsr: CAM_DATA_PHYS not supported"); -#else struct bus_dma_segment seg; - seg.ds_addr = (bus_addr_t)pccb->csio.data_ptr; + seg.ds_addr = (bus_addr_t)(vm_offset_t)pccb->csio.data_ptr; seg.ds_len = pccb->csio.dxfer_len; arcmsr_execute_srb(srb, &seg, 1, 0); -#endif } } else { /* Scatter/gather list */ @@ -3421,7 +3417,11 @@ static u_int32_t arcmsr_initialize(device_t dev) if(bus_dma_tag_create( /*parent_dmat*/ acb->parent_dmat, /*alignment*/ 1, /*boundary*/ 0, - /*lowaddr*/ BUS_SPACE_MAXADDR, +#ifdef PAE + /*lowaddr*/ BUS_SPACE_MAXADDR_32BIT, +#else + /*lowaddr*/ BUS_SPACE_MAXADDR, +#endif /*highaddr*/ BUS_SPACE_MAXADDR, /*filter*/ NULL, /*filterarg*/ NULL,