Re: process stuck in a sched_yield() loop
On 2015/05/09 16:31, Philip Guenther wrote: On Thu, 7 May 2015, David Coppa wrote: Can somebody with the necessary skills help me with this? $ cd /usr/ports/devel/libinotify/ make clean fake make test I remember this used to work... Now, most of the times, the 'check_libinotify' process brings the CPU to 100% and it's stuck in a sched_yield() loop: Looks like the problem is that while one thread is calling vfork(), another thread does something that acquires the spinlock inside rthread_dl_lock() (probably another vfork). The child of the vfork tries to acquire the spinlock so that it can release the recursive lock itself and spins forever. The solution is to have the child reset that lock. I'm unable to reproduce after applying the diff below. Oh, I wonder if this will fix icinga2...
Re: OpenBSD on Kosagi Novena open-source ARM board/desktop/laptop
On Mon, 11 May 2015, Jonathan Gray wrote: If you can get an installation completed (the imxenet is pretty flaky, possibly because of an all-0 MAC address), then you'll also need to copy bsd*.IMX.umg to the /boot partition of the sdcard under Linux (OpenBSD can't access the sdcard yet) and arrange uboot to fatload it from there. Something like: There are two sd slots which one doesn't work? The (internal?) micro-sd slot doesn't have card detect the (external?) normal sized sd slot does I haven't tried the external one, but the internal one doesn't work. I'm not sure which is which in the dmesg: imxesdhc0 at imx0 sdmmc0 at imxesdhc0 imxesdhc1 at imx0 sdmmc1 at imxesdhc1 ... sdmmc1: can't enable card -d
Re: OpenBSD on Kosagi Novena open-source ARM board/desktop/laptop
On Mon, May 11, 2015 at 04:31:30PM +1000, Damien Miller wrote: On Mon, 11 May 2015, Jonathan Gray wrote: If you can get an installation completed (the imxenet is pretty flaky, possibly because of an all-0 MAC address), then you'll also need to copy bsd*.IMX.umg to the /boot partition of the sdcard under Linux (OpenBSD can't access the sdcard yet) and arrange uboot to fatload it from there. Something like: There are two sd slots which one doesn't work? The (internal?) micro-sd slot doesn't have card detect the (external?) normal sized sd slot does I haven't tried the external one, but the internal one doesn't work. I'm not sure which is which in the dmesg: imxesdhc0 at imx0 sdmmc0 at imxesdhc0 imxesdhc1 at imx0 sdmmc1 at imxesdhc1 ... sdmmc1: can't enable card -d That reminds me of the problem I ran into with my bbb a while ago. Here is what should be the equivalent diff for imx. Index: imxesdhc.c === RCS file: /cvs/src/sys/arch/armv7/imx/imxesdhc.c,v retrieving revision 1.7 diff -u -p -r1.7 imxesdhc.c --- imxesdhc.c 8 May 2015 03:38:26 - 1.7 +++ imxesdhc.c 11 May 2015 06:57:10 - @@ -262,6 +262,9 @@ imxesdhc_attach(struct device *parent, s sc-sc_ih = arm_intr_establish(aa-aa_dev-irq[0], IPL_SDMMC, imxesdhc_intr, sc, sc-sc_dev.dv_xname); + HSET4(sc, SDHC_HOST_CTRL_CAP, SDHC_HOST_CTRL_CAP_VS18 | + SDHC_HOST_CTRL_CAP_VS30); + /* * Reset the host controller and enable interrupts. */
Re: OpenBSD on Kosagi Novena open-source ARM board/desktop/laptop
On Mon, May 11, 2015 at 02:49:14PM +1000, Jonathan Gray wrote: Getting at the atheros wlan/mini pcie slot would need something along the lines of Patrick's imxpcibr work. And once you're there you'll need AR9285 support in athn(4) as well. Or swap in a supported card. I suppose there's no wifi whitelist in BIOS? ;)
Re: Async upd(4) - patch 7/7
On 2015-05-07 04:19, David Higgs wrote: On Apr 30, 2015, at 7:09 AM, Martin Pieuchot m...@openbsd.org wrote: [...] Your tweaks were good, so I tweaked it further: - When submit fails, invalidate affected sensors as described above. - When invalidating sensors, do it recursively. - When battery is not present, invalidate children but not BatteryPresent. Let me know what you think. Committed thanks!. I'm looking forward to see more supported sensors added to upd(4) :) M.
Re: vfs_shutdown would like to do polled I/O at least on panic
On Fri, May 08, 2015 at 20:28 +0200, Mark Kettenis wrote: Date: Fri, 8 May 2015 20:15:58 +0200 From: Mike Belopuhov m...@belopuhov.com On Fri, May 08, 2015 at 12:34 +0200, Mike Belopuhov wrote: I think tsleep(9) and msleep(9) need to release and re-acquire the kernel lock in the cold || panicstr case. Well, it's not hard to do really, but... We might need this for handling interrupts during autoconf as soon as we start distributing interrupts over CPUs. ...cold might mean that interrupts are not ready yet. So then we might need another flag for shutdown? This is what I have come up with. Chunks were taken directly from mi_switch and it seems to do the job just fine. Right now I'm not using any additional flags and it seems to work here. I'll resume testing on Monday, but it looks fairly complete. Any comments? Makes sense to me. The msleep/tsleep code could be simplified to: if (__mp_lock_held(kernel_lock)) { hold_count = __mp_release_all(kernel_lock); __mp_acquire_count(kernel_lock, hold_count); } Indeed. I'm also wondering whether we should change __mp_release_all() to simple return 0 if the current CPU does not hold the lock, such that the __mp_lock_held() check isn't needed anymore. But that's a separate issue. It would have made the __mp_release_all safer as well since it wouldn't require an external check. I don't have any firther input on this, diff works fine here. OK? diff --git sys/kern/kern_synch.c sys/kern/kern_synch.c index 03308b4..6f573fc 100644 --- sys/kern/kern_synch.c +++ sys/kern/kern_synch.c @@ -103,10 +103,13 @@ extern int safepri; int tsleep(const volatile void *ident, int priority, const char *wmesg, int timo) { struct sleep_state sls; int error, error1; +#ifdef MULTIPROCESSOR + int hold_count; +#endif KASSERT((priority ~(PRIMASK | PCATCH)) == 0); #ifdef MULTIPROCESSOR KASSERT(timo || __mp_lock_held(kernel_lock)); @@ -120,10 +123,16 @@ tsleep(const volatile void *ident, int priority, const char *wmesg, int timo) * don't run any other procs or panic below, * in case this is the idle process and already asleep. */ s = splhigh(); splx(safepri); +#ifdef MULTIPROCESSOR + if (__mp_lock_held(kernel_lock)) { + hold_count = __mp_release_all(kernel_lock); + __mp_acquire_count(kernel_lock, hold_count); + } +#endif splx(s); return (0); } sleep_setup(sls, ident, priority, wmesg); @@ -149,10 +158,13 @@ int msleep(const volatile void *ident, struct mutex *mtx, int priority, const char *wmesg, int timo) { struct sleep_state sls; int error, error1, spl; +#ifdef MULTIPROCESSOR + int hold_count; +#endif KASSERT((priority ~(PRIMASK | PCATCH | PNORELOCK)) == 0); KASSERT(mtx != NULL); if (cold || panicstr) { @@ -163,10 +175,16 @@ msleep(const volatile void *ident, struct mutex *mtx, int priority, * in case this is the idle process and already asleep. */ spl = MUTEX_OLDIPL(mtx); MUTEX_OLDIPL(mtx) = safepri; mtx_leave(mtx); +#ifdef MULTIPROCESSOR + if (__mp_lock_held(kernel_lock)) { + hold_count = __mp_release_all(kernel_lock); + __mp_acquire_count(kernel_lock, hold_count); + } +#endif if ((priority PNORELOCK) == 0) { mtx_enter(mtx); MUTEX_OLDIPL(mtx) = spl; } else splx(spl); diff --git sys/kern/vfs_subr.c sys/kern/vfs_subr.c index a26fbe2..a373789 100644 --- sys/kern/vfs_subr.c +++ sys/kern/vfs_subr.c @@ -1664,10 +1664,13 @@ int vfs_syncwait(int verbose) { struct buf *bp; int iter, nbusy, dcount, s; struct proc *p; +#ifdef MULTIPROCESSOR + int hold_count; +#endif p = curproc? curproc : proc0; sys_sync(p, (void *)0, (register_t *)0); /* Wait for sync to finish. */ @@ -1698,11 +1701,21 @@ vfs_syncwait(int verbose) } if (nbusy == 0) break; if (verbose) printf(%d , nbusy); +#ifdef MULTIPROCESSOR + if (__mp_lock_held(kernel_lock)) + hold_count = __mp_release_all(kernel_lock); + else + hold_count = 0; +#endif DELAY(4 * iter); +#ifdef MULTIPROCESSOR + if (hold_count) + __mp_acquire_count(kernel_lock, hold_count); +#endif } return nbusy; }
Brainy: Kernel Use-after-free Memory Leak in hifn
Hi, I put here two bugs among others: sys/dev/pci/hifn7751.c 2757 if (!(m0-m_flags M_EXT)) m_freem(m0); len = MCLBYTES; totlen -= len; m0-m_pkthdr.len = m0-m_len = len; mlast = m0; Use-after-free with 'm0'. sys/dev/pci/hifn7751.c 2766 MGET(m, M_DONTWAIT, MT_DATA); if (m == NULL) { m_freem(m0); return (NULL); } MCLGET(m, M_DONTWAIT); if (!(m-m_flags M_EXT)) { m_freem(m0); return (NULL); } len = MCLBYTES; 'm' is leaked. Found by The Brainy Code Scanner. Maxime
Re: UPD regression with
On Mon, May 11, 2015 at 8:07 PM, Alexander Hall alexan...@beard.se wrote: Upgrading to the latest snapshot, I noticed my upd sensors had been disturbingly crippled. uhidev0 at uhub4 port 1 configuration 1 interface 0 EATON Eaton 3S rev 2.00/1.00 addr 2 uhidev0: iclass 3/0, 32 report ids upd0 at uhidev0 Diff below is what happens from upd.c r1.13 to r1.14. -hw.sensors.upd0.indicator0=On (ACPresent), OK -hw.sensors.upd0.indicator1=On (Charging), OK -hw.sensors.upd0.indicator2=Off (Discharging), OK -hw.sensors.upd0.indicator3=Off (ShutdownImminent), OK -hw.sensors.upd0.percent0=100.00% (FullChargeCapacity), OK -hw.sensors.upd0.percent1=100.00% (RemainingCapacity), OK +hw.sensors.upd0.indicator0=Off (ShutdownImminent), OK +hw.sensors.upd0.indicator1=On (ACPresent), OK Is this an expected fallout? Can I provide more info to assist? Full dmesg (latest snap + vanilla current kernel w/ upd.c r1.13) follows. It seems your device doesn't have a BatteryPresent report, or it is somehow getting mangled. Can you run lsusb -v on your device and check if Battery Present is shown? If it is not, we'll have to make sensor dependencies less strict. I'll start thinking about how to do this. Thanks for the report. --david
Re: UPD regression with
On May 11, 2015, at 8:21 PM, David Higgs hig...@gmail.com wrote: On Mon, May 11, 2015 at 8:07 PM, Alexander Hall alexan...@beard.se mailto:alexan...@beard.sewrote: Upgrading to the latest snapshot, I noticed my upd sensors had been disturbingly crippled. uhidev0 at uhub4 port 1 configuration 1 interface 0 EATON Eaton 3S rev 2.00/1.00 addr 2 uhidev0: iclass 3/0, 32 report ids upd0 at uhidev0 Diff below is what happens from upd.c r1.13 to r1.14. -hw.sensors.upd0.indicator0=On (ACPresent), OK -hw.sensors.upd0.indicator1=On (Charging), OK -hw.sensors.upd0.indicator2=Off (Discharging), OK -hw.sensors.upd0.indicator3=Off (ShutdownImminent), OK -hw.sensors.upd0.percent0=100.00% (FullChargeCapacity), OK -hw.sensors.upd0.percent1=100.00% (RemainingCapacity), OK +hw.sensors.upd0.indicator0=Off (ShutdownImminent), OK +hw.sensors.upd0.indicator1=On (ACPresent), OK Is this an expected fallout? Can I provide more info to assist? Full dmesg (latest snap + vanilla current kernel w/ upd.c r1.13) follows. It seems your device doesn't have a BatteryPresent report, or it is somehow getting mangled. Can you run lsusb -v on your device and check if Battery Present is shown? If it is not, we'll have to make sensor dependencies less strict. I'll start thinking about how to do this. Alternatively, you could try the following diff, which flattens the sensor dependency tree when a parent sensor isn’t available. Thanks. --david --- a/upd.c +++ b/upd.c @@ -225,8 +225,12 @@ upd_attach_sensor_tree(struct upd_softc for (i = 0; i nentries; i++) { entry = entries + i; - if (!upd_lookup_usage_entry(desc, size, entry, item)) + if (!upd_lookup_usage_entry(desc, size, entry, item) { + /* dependency missing, add children to parent */ + upd_attach_sensor_tree(sc, desc, size, + entry-nchildren, entry-children, queue); continue; + } DPRINTF((%s: found %s on repid=%d\n, DEVNAME(sc), entry-usage_name, item.report_ID));
Re: vfs_shutdown would like to do polled I/O at least on panic
Date: Mon, 11 May 2015 16:54:54 +0200 From: Mike Belopuhov m...@belopuhov.com On Fri, May 08, 2015 at 20:28 +0200, Mark Kettenis wrote: Date: Fri, 8 May 2015 20:15:58 +0200 From: Mike Belopuhov m...@belopuhov.com On Fri, May 08, 2015 at 12:34 +0200, Mike Belopuhov wrote: I think tsleep(9) and msleep(9) need to release and re-acquire the kernel lock in the cold || panicstr case. Well, it's not hard to do really, but... We might need this for handling interrupts during autoconf as soon as we start distributing interrupts over CPUs. ...cold might mean that interrupts are not ready yet. So then we might need another flag for shutdown? This is what I have come up with. Chunks were taken directly from mi_switch and it seems to do the job just fine. Right now I'm not using any additional flags and it seems to work here. I'll resume testing on Monday, but it looks fairly complete. Any comments? Makes sense to me. The msleep/tsleep code could be simplified to: if (__mp_lock_held(kernel_lock)) { hold_count = __mp_release_all(kernel_lock); __mp_acquire_count(kernel_lock, hold_count); } Indeed. I'm also wondering whether we should change __mp_release_all() to simple return 0 if the current CPU does not hold the lock, such that the __mp_lock_held() check isn't needed anymore. But that's a separate issue. It would have made the __mp_release_all safer as well since it wouldn't require an external check. I don't have any firther input on this, diff works fine here. OK? ok kettenis@ diff --git sys/kern/kern_synch.c sys/kern/kern_synch.c index 03308b4..6f573fc 100644 --- sys/kern/kern_synch.c +++ sys/kern/kern_synch.c @@ -103,10 +103,13 @@ extern int safepri; int tsleep(const volatile void *ident, int priority, const char *wmesg, int timo) { struct sleep_state sls; int error, error1; +#ifdef MULTIPROCESSOR + int hold_count; +#endif KASSERT((priority ~(PRIMASK | PCATCH)) == 0); #ifdef MULTIPROCESSOR KASSERT(timo || __mp_lock_held(kernel_lock)); @@ -120,10 +123,16 @@ tsleep(const volatile void *ident, int priority, const char *wmesg, int timo) * don't run any other procs or panic below, * in case this is the idle process and already asleep. */ s = splhigh(); splx(safepri); +#ifdef MULTIPROCESSOR + if (__mp_lock_held(kernel_lock)) { + hold_count = __mp_release_all(kernel_lock); + __mp_acquire_count(kernel_lock, hold_count); + } +#endif splx(s); return (0); } sleep_setup(sls, ident, priority, wmesg); @@ -149,10 +158,13 @@ int msleep(const volatile void *ident, struct mutex *mtx, int priority, const char *wmesg, int timo) { struct sleep_state sls; int error, error1, spl; +#ifdef MULTIPROCESSOR + int hold_count; +#endif KASSERT((priority ~(PRIMASK | PCATCH | PNORELOCK)) == 0); KASSERT(mtx != NULL); if (cold || panicstr) { @@ -163,10 +175,16 @@ msleep(const volatile void *ident, struct mutex *mtx, int priority, * in case this is the idle process and already asleep. */ spl = MUTEX_OLDIPL(mtx); MUTEX_OLDIPL(mtx) = safepri; mtx_leave(mtx); +#ifdef MULTIPROCESSOR + if (__mp_lock_held(kernel_lock)) { + hold_count = __mp_release_all(kernel_lock); + __mp_acquire_count(kernel_lock, hold_count); + } +#endif if ((priority PNORELOCK) == 0) { mtx_enter(mtx); MUTEX_OLDIPL(mtx) = spl; } else splx(spl); diff --git sys/kern/vfs_subr.c sys/kern/vfs_subr.c index a26fbe2..a373789 100644 --- sys/kern/vfs_subr.c +++ sys/kern/vfs_subr.c @@ -1664,10 +1664,13 @@ int vfs_syncwait(int verbose) { struct buf *bp; int iter, nbusy, dcount, s; struct proc *p; +#ifdef MULTIPROCESSOR + int hold_count; +#endif p = curproc? curproc : proc0; sys_sync(p, (void *)0, (register_t *)0); /* Wait for sync to finish. */ @@ -1698,11 +1701,21 @@ vfs_syncwait(int verbose) } if (nbusy == 0) break; if (verbose) printf(%d , nbusy); +#ifdef MULTIPROCESSOR + if (__mp_lock_held(kernel_lock)) + hold_count = __mp_release_all(kernel_lock); + else + hold_count = 0; +#endif DELAY(4 * iter); +#ifdef MULTIPROCESSOR + if (hold_count) + __mp_acquire_count(kernel_lock, hold_count); +#endif
UPD regression with
Upgrading to the latest snapshot, I noticed my upd sensors had been disturbingly crippled. uhidev0 at uhub4 port 1 configuration 1 interface 0 EATON Eaton 3S rev 2.00/1.00 addr 2 uhidev0: iclass 3/0, 32 report ids upd0 at uhidev0 Diff below is what happens from upd.c r1.13 to r1.14. -hw.sensors.upd0.indicator0=On (ACPresent), OK -hw.sensors.upd0.indicator1=On (Charging), OK -hw.sensors.upd0.indicator2=Off (Discharging), OK -hw.sensors.upd0.indicator3=Off (ShutdownImminent), OK -hw.sensors.upd0.percent0=100.00% (FullChargeCapacity), OK -hw.sensors.upd0.percent1=100.00% (RemainingCapacity), OK +hw.sensors.upd0.indicator0=Off (ShutdownImminent), OK +hw.sensors.upd0.indicator1=On (ACPresent), OK Is this an expected fallout? Can I provide more info to assist? Full dmesg (latest snap + vanilla current kernel w/ upd.c r1.13) follows. /Alexander OpenBSD 5.7-current (GENERIC.MP) #2: Tue May 12 01:50:04 CEST 2015 alexan...@bunke.beard.se:/bigtmp/src/sys/arch/amd64/compile/GENERIC.MP real mem = 1996029952 (1903MB) avail mem = 1931755520 (1842MB) mpath0 at root scsibus0 at mpath0: 256 targets mainbus0 at root bios0 at mainbus0: SMBIOS rev. 2.6 @ 0xfb330 (35 entries) bios0: vendor HP version O41 date 10/01/2013 bios0: HP ProLiant MicroServer acpi0 at bios0: rev 2 acpi0: sleep states S0 S4 S5 acpi0: tables DSDT FACP APIC MCFG SPMI OEMB HPET EINJ BERT ERST HEST SSDT acpi0: wakeup devices PCE2(S4) PCE3(S4) PCE4(S4) PCE5(S4) PCE6(S4) PCE7(S4) PCE9(S4) PCEA(S4) PCEB(S4) PCEC(S4) SBAZ(S4) P0PC(S4) PE20(S4) PE21(S4) PE22(S4) PE23(S4) acpitimer0 at acpi0: 3579545 Hz, 32 bits acpimadt0 at acpi0 addr 0xfee0: PC-AT compat cpu0 at mainbus0: apid 0 (boot processor) cpu0: AMD Turion(tm) II Neo N54L Dual-Core Processor, 2196.67 MHz cpu0: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,MMX,FXSR,SSE,SSE2,HTT,SSE3,MWAIT,CX16,POPCNT,NXE,MMXX,FFXSR,PAGE1GB,LONG,3DNOW2,3DNOW,LAHF,CMPLEG,SVM,EAPICSP,AMCR8,ABM,SSE4A,MASSE,3DNOWP,OSVW,IBS,SKINIT,NODEID,ITSC cpu0: 64KB 64b/line 2-way I-cache, 64KB 64b/line 2-way D-cache, 1MB 64b/line 16-way L2 cache cpu0: ITLB 32 4KB entries fully associative, 16 4MB entries fully associative cpu0: DTLB 48 4KB entries fully associative, 48 4MB entries fully associative cpu0: AMD erratum 721 detected and fixed cpu0: smt 0, core 0, package 0 mtrr: Pentium Pro MTRR support, 8 var ranges, 88 fixed ranges cpu0: apic clock running at 199MHz cpu0: mwait min=64, max=64, C-substates=0.0.0.0.0, IBE cpu1 at mainbus0: apid 1 (application processor) cpu1: AMD Turion(tm) II Neo N54L Dual-Core Processor, 2196.36 MHz cpu1: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,MMX,FXSR,SSE,SSE2,HTT,SSE3,MWAIT,CX16,POPCNT,NXE,MMXX,FFXSR,PAGE1GB,LONG,3DNOW2,3DNOW,LAHF,CMPLEG,SVM,EAPICSP,AMCR8,ABM,SSE4A,MASSE,3DNOWP,OSVW,IBS,SKINIT,NODEID,ITSC cpu1: 64KB 64b/line 2-way I-cache, 64KB 64b/line 2-way D-cache, 1MB 64b/line 16-way L2 cache cpu1: ITLB 32 4KB entries fully associative, 16 4MB entries fully associative cpu1: DTLB 48 4KB entries fully associative, 48 4MB entries fully associative cpu1: AMD erratum 721 detected and fixed cpu1: smt 0, core 1, package 0 ioapic0 at mainbus0: apid 2 pa 0xfec0, version 21, 24 pins acpimcfg0 at acpi0 addr 0xe000, bus 0-255 acpihpet0 at acpi0: 14318180 Hz acpi0: unable to load \\_SB_._INI.EXH1 acpiprt0 at acpi0: bus 0 (PCI0) acpiprt1 at acpi0: bus 1 (P0P1) acpiprt2 at acpi0: bus -1 (PCE2) acpiprt3 at acpi0: bus 2 (PCE4) acpiprt4 at acpi0: bus 3 (PCE6) acpicpu0 at acpi0: PSS acpicpu1 at acpi0: PSS acpibtn0 at acpi0: PWRB ipmi at mainbus0 not configured cpu0: 2196 MHz: speeds: 2200 1900 1600 1300 800 MHz pci0 at mainbus0 bus 0 pchb0 at pci0 dev 0 function 0 AMD RS880 Host rev 0x00 ppb0 at pci0 dev 1 function 0 vendor Hewlett-Packard, unknown product 0x9602 rev 0x00 pci1 at ppb0 bus 1 radeondrm0 at pci1 dev 5 function 0 ATI Mobility Radeon HD 4200 rev 0x00 drm0 at radeondrm0 radeondrm0: apic 2 int 18 ppb1 at pci0 dev 4 function 0 AMD RS780 PCIE rev 0x00: msi pci2 at ppb1 bus 2 vendor Marvell, unknown product 0x9192 (class mass storage subclass RAID, rev 0x13) at pci2 dev 0 function 0 not configured ppb2 at pci0 dev 6 function 0 AMD RS780 PCIE rev 0x00 pci3 at ppb2 bus 3 bge0 at pci3 dev 0 function 0 Broadcom BCM5723 rev 0x10, BCM5784 A1 (0x5784100): msi, address 38:ea:a7:a9:e9:86 brgphy0 at bge0 phy 1: BCM5784 10/100/1000baseT PHY, rev. 4 ahci0 at pci0 dev 17 function 0 ATI SBx00 SATA rev 0x40: apic 2 int 19, AHCI 1.2 ahci0: port 0: 3.0Gb/s ahci0: port 1: 3.0Gb/s ahci0: port 2: 3.0Gb/s ahci0: port 3: 3.0Gb/s scsibus1 at ahci0: 32 targets sd0 at scsibus1 targ 0 lun 0: ATA, Samsung SSD 840, EXT0 SCSI3 0/direct fixed naa.50025388a01a9722 sd0: 114473MB, 512 bytes/sector, 234441648 sectors, thin sd1 at scsibus1 targ 1 lun 0: ATA, WDC WD60EFRX-68M, 82.0 SCSI3 0/direct fixed naa.50014ee2b613deca sd1: 5723166MB, 512 bytes/sector, 11721045168 sectors sd2 at scsibus1 targ 2 lun 0: ATA, Hitachi HDS72202, JKAO SCSI3