ifnet: Replace if_addr_lock rwlock with epoch + mutexRun on LLNW canaries and tested by pho@gallatin:Using a 14-core, 28-HTT single socket E5-2697 v3 with a 40GbE MLX5based ConnectX 4-LX NIC, I
ifnet: Replace if_addr_lock rwlock with epoch + mutexRun on LLNW canaries and tested by pho@gallatin:Using a 14-core, 28-HTT single socket E5-2697 v3 with a 40GbE MLX5based ConnectX 4-LX NIC, I see an almost 12% improvement in receivedpacket rate, and a larger improvement in bytes delivered all the wayto userspace.When the host receiving 64 streams of netperf -H $DUT -t UDP_STREAM -- -m 1,I see, using nstat -I mce0 1 before the patch:InMpps OMpps InGbs OGbs err TCP Est %CPU syscalls csw irq GBfree4.98 0.00 4.42 0.00 4235592 33 83.80 4720653 2149771 1235 247.324.73 0.00 4.20 0.00 4025260 33 82.99 4724900 2139833 1204 247.324.72 0.00 4.20 0.00 4035252 33 82.14 4719162 2132023 1264 247.324.71 0.00 4.21 0.00 4073206 33 83.68 4744973 2123317 1347 247.324.72 0.00 4.21 0.00 4061118 33 80.82 4713615 2188091 1490 247.324.72 0.00 4.21 0.00 4051675 33 85.29 4727399 2109011 1205 247.324.73 0.00 4.21 0.00 4039056 33 84.65 4724735 2102603 1053 247.32After the patchInMpps OMpps InGbs OGbs err TCP Est %CPU syscalls csw irq GBfree5.43 0.00 4.20 0.00 3313143 33 84.96 5434214 1900162 2656 245.515.43 0.00 4.20 0.00 3308527 33 85.24 5439695 1809382 2521 245.515.42 0.00 4.19 0.00 3316778 33 87.54 5416028 1805835 2256 245.515.42 0.00 4.19 0.00 3317673 33 90.44 5426044 1763056 2332 245.515.42 0.00 4.19 0.00 3314839 33 88.11 5435732 1792218 2499 245.525.44 0.00 4.19 0.00 3293228 33 91.84 5426301 1668597 2121 245.52Similarly, netperf reports 230Mb/s before the patch, and 270Mb/s after the patchReviewed by: gallatinSponsored by: Limelight NetworksDifferential Revision: https://reviews.freebsd.org/D15366
show more ...
Move the powerpc64 direct map base address from zero to high memory. Thisaccomplishes a few things:- Makes NULL an invalid address in the kernel, which is useful for catching bugs.- Lays groundw
Move the powerpc64 direct map base address from zero to high memory. Thisaccomplishes a few things:- Makes NULL an invalid address in the kernel, which is useful for catching bugs.- Lays groundwork for radix-tree translation on POWER9, which requires the direct map be at high memory.- Similarly lays groundwork for a direct map on 64-bit Book-E.The new base address is chosen as the base of the fourth radix quadrant(the minimum kernel address in this translation mode) and because allsupported CPUs ignore at least the first two bits of addresses in realmode, allowing direct-map addresses to be used in real-mode handlers.This is required by Linux and is part of the architecture standardstarting in POWER ISA 3, so can be relied upon.Reviewed by: jhibbits, Breno LeitaoDifferential Revision: D14499
Honor physical memory regions marked unavailable in the FDT, when present.The most notable of these is the FDT itself, which it is a bad idea tooverwrite.
Remove assumption that all physical memory is available to the kernel andthat the physical and available memory arrays are interchangeable.
Avoid dereferencing random memory when kickstarting DMA.MFC after: 1 week
Merge AIM and Book-E PCPU fieldsThis is part of a long-term goal of merging Book-E and AIM into a single GENERICkernel. As more work is done, the struct may be optimized further.Reviewed by: nw
Merge AIM and Book-E PCPU fieldsThis is part of a long-term goal of merging Book-E and AIM into a single GENERICkernel. As more work is done, the struct may be optimized further.Reviewed by: nwhitehorn
Document places we assume that physical memory is direct-mapped at zero byusing a new macro PHYS_TO_DMAP, which deliberately has the same name as theequivalent macro on amd64. This also sets the st
Document places we assume that physical memory is direct-mapped at zero byusing a new macro PHYS_TO_DMAP, which deliberately has the same name as theequivalent macro on amd64. This also sets the stage for moving the directmap to another base address.
Fix reversed endianness that crept in at some point. Blue is now blueinstead of pink.MFC after: 3 days
Use data from the boot loader to pick the appropriate output graphics modeinstead of hard-coding a default. This information is passed implicitly bythe PS3 firmware and can be relied upon. Also adj
Use data from the boot loader to pick the appropriate output graphics modeinstead of hard-coding a default. This information is passed implicitly bythe PS3 firmware and can be relied upon. Also adjust the default mode, ifsomehow firmware doesn't pass one, to 1920x1080 from 720x480 since it is2017.MFC after: 2 weeks
Remove logic for early console with loader.ps3 now that loader.ps3 is dead.
Change the way SMP startup works to match the new multi-AP features inlocore64.S introduced in r327358.MFC after: 3 weeks
sys/powerpc: further adoption of SPDX licensing ID tags.Mainly focus on files that use BSD 2-Clause license, however the tool Iwas using misidentified many licenses so this was mostly a manual - e
sys/powerpc: further adoption of SPDX licensing ID tags.Mainly focus on files that use BSD 2-Clause license, however the tool Iwas using misidentified many licenses so this was mostly a manual - errorprone - task.The Software Package Data Exchange (SPDX) group provides a specificationto make it easier for automated tools to detect and summarize well knownopensource licenses. We are gradually adopting the specification, notingthat the tags are considered only advisory and do not, in any way,superceed or replace the license texts.
Always null-terminate ccb_pathinq.(sim_vid|hba_vid|dev_name)The sim_vid, hba_vid, and dev_name fields of struct ccb_pathinq arefixed-length strings. AFAICT the only place they're read is insbin/c
Always null-terminate ccb_pathinq.(sim_vid|hba_vid|dev_name)The sim_vid, hba_vid, and dev_name fields of struct ccb_pathinq arefixed-length strings. AFAICT the only place they're read is insbin/camcontrol/camcontrol.c, which assumes they'll be null-terminated.However, the kernel doesn't null-terminate them. A bunch of copy-pasted codeuses strncpy to write them, and doesn't guarantee null-termination. For atleast 4 drivers (mpr, mps, ciss, and hyperv), the hba_vid field actuallyoverflows. You can see the result by doing "camcontrol negotiate da0 -v".This change null-terminates those fields everywhere they're set in thekernel. It also shortens a few strings to ensure they'll fit within the16-character field.PR: 215474Reported by: CoverityCID: 1009997 1010000 1010001 1010002 1010003 1010004 1010005CID: 1331519 1010006 1215097 1010007 1288967 1010008 1306000CID: 1211924 1010009 1010010 1010011 1010012 1010013 1010014CID: 1147190 1010017 1010016 1010018 1216435 1010020 1010021CID: 1010022 1009666 1018185 1010023 1010025 1010026 1010027CID: 1010028 1010029 1010030 1010031 1010033 1018186 1018187CID: 1010035 1010036 1010042 1010041 1010040 1010039Reviewed by: imp, sephe, slmMFC after: 4 weeksSponsored by: Spectra Logic CorpDifferential Revision: https://reviews.freebsd.org/D9037Differential Revision: https://reviews.freebsd.org/D9038
Fix the resource_list_print_type() calls to use uintmax_t.Missed a bunch from r297000.
As <machine/pmap.h> is included from <vm/pmap.h>, there is no need toinclude it explicitly when <vm/pmap.h> is already included.Reviewed by: alc, kibDifferential Revision: https://reviews.freebsd
As <machine/pmap.h> is included from <vm/pmap.h>, there is no need toinclude it explicitly when <vm/pmap.h> is already included.Reviewed by: alc, kibDifferential Revision: https://reviews.freebsd.org/D5373
Another conversion u_long -> rman_res_t
EHCI: Make core reset and port speed reading more generic.Use driver settable callbacks for handling of:- core post reset- reading actual port speedTypically, OTG enabled EHCI cores wants setti
EHCI: Make core reset and port speed reading more generic.Use driver settable callbacks for handling of:- core post reset- reading actual port speedTypically, OTG enabled EHCI cores wants setting of USBMODE register,but this register is not defined in EHCI specification and differentcores can have it on different offset.Also, for cores with TT extension, actual port speed must be determinable.But again, EHCI specification not covers this so this patch providesfunction for two most common variant of speed bits layout.Reviewed by: hselaskyDifferential Revision: https://reviews.freebsd.org/D5088
Add support for USB display link adapters to the FB and VT drivers.The vtophys() function is used to get the physical page address forthe virtually allocated frame buffers when a physically continu
Add support for USB display link adapters to the FB and VT drivers.The vtophys() function is used to get the physical page address forthe virtually allocated frame buffers when a physically continuousmemory area is not available. This change also allows removing themasking of the FB_FLAG_NOMMAP flag in the PS3 syscons driver.The FB and VT drivers were tested using X.org/xf86-video-scfb andsyscons.
New pmap implementation for 64-bit PowerPC processors. The main focus ofthis change is to improve concurrency:- Drop global state stored in the shadow overflow page table (and all other global st
New pmap implementation for 64-bit PowerPC processors. The main focus ofthis change is to improve concurrency:- Drop global state stored in the shadow overflow page table (and all other global state)- Remove all global locks- Use per-PTE lock bits to allow parallel page insertion- Reconstruct state when requested for evicted PTEs instead of buffering it during overflowThis drops total wall time for make buildworld on a 32-thread POWER8 systemby a factor of two and system time by a factor of three, providing performance20% better than similarly clocked Core i7 Xeons per-core. Performance onsmaller SMP systems, where PMAP lock contention was not as much of an issue,is nearly unchanged.Tested on: POWER8, POWER5+, G5 UP, G5 SMP (64-bit and 32-bit kernels)Merged from: user/nwhitehorn/ppc64-pmap-reworkLooked over by: jhibbits, andreastMFC after: 3 monthsRelnotes: yesSponsored by: FreeBSD Foundation
Allow use of higher-resolution (e.g. 1920x1080) framebuffers on PS3.MFC after: 1 month
Add 64-bit DMA support in the XHCI controller driver.- Fix some comments and whitespace while at it.MFC after: 1 monthSubmitted by: marius@
Use FDT properties to identify a PS3 if present.
Make PS3 work with the userspace kboot loader. loader.ps3 will disappearfrom the tree in the near future.Done at: Hackathon
Mechanically convert to if_inc_counter().
vt(4): Use vt_fb_drawrect() and vt_fb_setpixel() in all vt_fb-derivativeReview: https://reviews.freebsd.org/D789Reviewed by: nwhitehornApproved by: nwhitehornMFC after: 2 days
123