[PATCH 0/3] RISC-V: Fix vtop warnings and improve kernel address range support
by Rui Qi
This series fixes two bugs and adds an enhancement for the riscv64
architecture support in the crash utility:
Patch 1 fixes spurious "WARNING: mem_map[] not accessible" messages
when running vtop or kmem -p on RISC-V. The root cause is that
riscv64.c never sets the VMEMMAP flag on machdep->flags, so crash
does not recognize that unmapped vmemmap holes are normal for
SPARSEMEM_VMEMMAP configurations.
Patch 2 fixes noisy "PAGE: not present" and "invalid for address"
output from the vtop page table walk functions. These messages are
printed unconditionally even when called non-verbosely by internal
routines like kmem -p or dump_mem_map. They should only appear
when verbose=1, consistent with all other diagnostic output in
these functions and with how x86_64/arm64 handle the same case.
Patch 3 adds an architecture-specific get_kvaddr_ranges callback
so that the search command can properly categorize kernel virtual
address regions including modules and vmemmap, instead of falling
back to the generic two-region default.
These patches were tested on a RISC-V 32-core machine with kernel
6.12.13.bsk.1-rc17-riscv64 and vmlinux ~700MB with debug info.
Rui Qi (3):
riscv64: Set VMEMMAP flag to fix spurious mem_map[] warnings
riscv64: Guard verbose output in vtop page table walk functions
riscv64: Add get_kvaddr_ranges callback for kernel address ranges
riscv64.c | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++-----
1 file changed, 62 insertions(+), 6 deletions(-)
--
2.20.1
1 day, 10 hours
[PATCH 0/6] LoongArch64: improve dumpfile stack unwinding
by Ming Wang
This series improves LoongArch64 stack unwinding for vmcore dumpfiles.
LoongArch exception entry code may run from relocated exception handler
areas rather than from the canonical vmlinux text address. Looking up
those runtime PCs directly can fail to resolve symbols such as
handle_vint, which also breaks ORC lookup and exception-frame handoff.
The series first fixes the exception return address label to report ERA,
then maps relocated exception vector PCs back to their canonical kernel
symbols. It then adds initial LoongArch64 ORC support for core kernel
text, and uses the saved IRQ-stack state to continue unwinding active
dumpfile tasks from IRQ stack back to task stack. The last two patches
tighten fallback RA handling and only print exception pt_regs with
bt -f.
Tested:
- Built each patch separately with make lzo -j4 on LoongArch64.
- Built the final tree with make -j4 on the X86_64.
- Verified kdump vmcore backtrace still shows the sysrq panic chain.
- Verified git diff --check d0ffcb681f06..HEAD.
Ming Wang (6):
LoongArch64: print exception return address as ERA
LoongArch64: resolve relocated exception vector addresses
LoongArch64: add initial ORC unwinder support
LoongArch64: unwind dumpfile active tasks from IRQ stacks
LoongArch64: avoid replacing a valid RA with stack noise
LoongArch64: print exception registers only with bt -f
defs.h | 27 ++
loongarch64.c | 689 ++++++++++++++++++++++++++++++++++++++++++++++++--
2 files changed, 695 insertions(+), 21 deletions(-)
--
2.43.0
1 day, 10 hours
Decoding Consumer Minds: Fresh Ideas for Marketing Research Papers
by kefag22407@haotuwu.com
Marketing is no longer just about selling — it’s about understanding why people buy, share, and stay loyal. Research papers in marketing can dive into fascinating areas like consumer psychology, digital engagement, and emotional branding. Exploring topics such as the impact of social media influencers on brand perception, consumer trust in AI-driven recommendations, or sustainability as a driver of purchase intent can help uncover what really shapes modern consumer decisions.
Another promising angle is studying data and personalization in marketing. With companies relying heavily on analytics, there’s a growing need to explore how data-driven strategies influence consumer experience and brand loyalty. Researching ethical data usage, AI in customer segmentation, or neuromarketing trends can lead to insights that bridge creativity with strategy — essential for any marketer looking to make an impact in today’s competitive landscape. Have more info at: https://thedissertationhelp.co.uk/marketing-research-paper-topics/
2 days, 5 hours
Liquid Biopsy Market Forecast: Demand, Segmentation, Emerging Opportunities & Key Players 2026-2035
by km3065158@gmail.com
The research report titled Global Liquid Biopsy Market Offers an in-depth analysis of the current industry size, challenges, opportunities and growth scenarios. This latest document published by Roots Analysis highlights a brief discussion on the fundamental dynamics, including market drivers, key developments, possible threats and emerging trends that positively influence the market growth during the forecast period. In addition to major dynamics, the segment-wise analysis covered by our authors, such as product type, applications, supply-demand ratio, end-user and regional dominance, helps business vendors in making informed investment decisions.
This market study report has significantly covered exclusive information on the competitive market landscape, their product portfolio, and active leaders in this industry. In our research report, readers get to know about the impact of the pandemic outbreak on the global industry and major initiatives taken by industrial leaders to overcome the challenges arising due to the COVID-19 crisis. Furthermore, the report offers a strategic analysis of key market scenarios, trends and growing segments after the pandemic to help stakeholders understand the overall evolution along with investment opportunities rising in the future.
Global Liquid Biopsy Market Size Analysis:
According to our market analysis, the global liquid biopsy market size is estimated to be worth $ 33.45 billion in 2035 and is expected to grow at compounded annual growth rate (CAGR) of 15%, during the forecast period. In addition to market size analysis, our authors have covered a breakthrough analysis of fundamental parameters, segments, and regional insight that readers need to make a well-informed business decision.
Top Key Vendors of this Liquid Biopsy Market are:
NanoCellect Biomedical, Innovative Biochips, Cesca Therapeutics, Fluidigm, LumaCyte, Union Biometrica, LevitasBio, RareCyte®, Cytonome and Namocell.
Scope of the Report:
This study on Liquid Biopsy Market examines the worldwide and local markets, providing a thorough analysis of the market's overall growth potential. Additionally, it illuminates the complete competitive landscape of the global market. The report also presents a dashboard summary of the top key players, including their effective marketing strategies, market share, and recent developments in both past and current contexts.
Regional Analysis for Liquid Biopsy Market:
In addition to providing a segmental breakdown, this report is well-organized to include a study of each region. The researchers have conducted a comprehensive analysis of each region, highlighting key countries that contribute significantly to the revenue share of the Liquid Biopsy market. This study provides insight into how the market is expected to perform in each region and identifies emerging regions that are growing at a significant CAGR. The report covers the following regions:
North America (United States, Canada, and Mexico)
Europe (Germany, France, United Kingdom, Russia, Italy, and Rest of Europe)
Asia-Pacific (China, Japan, Korea, India, Southeast Asia, and Australia)
South America (Brazil, Argentina, Colombia, and Rest of South America)
Middle East & Africa (Saudi Arabia, UAE, Egypt, South Africa, and Rest of Middle East & Africa)
Report Segmentation:
The Liquid Biopsy Market (4th Edition), 2018-2022 (Historical Trends) and 2023-2035 (Forecasted Estimates): Distribution by Application (Early Cancer Diagnosis, Patient Monitoring, Treatment Selection, Recurrence Monitoring and Others), Target Disease Indication (Bladder Cancer, Breast Cancer, Colorectal Cancer, Gastric Cancer, Lung Cancer, Prostate Cancer and Others), Type of Circulating Biomarker (Cell Free DNA, Cell Free RNA, Circulating Tumor DNA, Extracellular Vesicles and Others Circulating Biomarkers), Type of Sample (Blood / Plasma and Others), End users (Hospitals, Research Institutes and Others), Stage of Development (Launched and Under Development), Type of Product (Assay kits, Devices, Software/ Algorithms and others), Type of Technique (Polymerase Chain Reaction, Next Generation Sequencing and Others), Application Area ( Clinical use, Research use only), Others
Report contents include:
• Historical data and forecast.
• Analysis of the Liquid Biopsy Market including revenues, future growth, and market outlook.
• Regional analysis including growth estimates.
• Analyzes the end user markets including growth estimates.
• Profiles on Liquid Biopsy Market including products, sales/revenues, and market position.
• Market structure, market drivers, and restraints.
Important Features of the reports:
• Detailed analysis of the Liquid Biopsy Market.
• Fluctuating market dynamics of the industry.
• Detailed market segmentation.
• Historical, current, and projected market size in terms of volume and value.
• Recent industry trends and developments.
• Competitive landscape of the Liquid Biopsy Market.
• Strategies of key players and product offerings.
• Potential and niche segments/regions exhibiting promising growth.
Reasons for Buying This Report:
Liquid Biopsy Market Current status and prospects of developed and emerging markets.
It is expected to dominate the Liquid Biopsy Market segments.
The region is expected to grow the fastest during the forecast period.
Determine the latest developments, keyword market shares, and strategies adopted by major market participants.
In addition, market research also mentions major players in Liquid Biopsy Markets around the world.
Their main marketing configurations and advertising companies have been highlighted to provide a clear understanding of the Liquid Biopsy Industry.
To know more about Liquid Biopsy market, visit here >> https://www.rootsanalysis.com/reports/liquid-biopsy-and-nicd-market/279.html
1 week, 4 days
Stem Cells for Achilles Tear Recovery
by wimati1072@okcpress.com
Lately I’ve been looking into newer recovery methods for Achilles tears because traditional rehab can apparently take a very long time and requires a lot of patience. I found this article https://ways2well.com/blog/stem-cells-for-achilles-tear-revolutionary-rec... and thought it explained regenerative medicine and tendon recovery in a really practical and understandable way. It talks about how stem cell therapy may potentially support tissue healing, reduce inflammation, and improve mobility during recovery from Achilles injuries. What I appreciated most was the realistic focus on gradual healing and long-term tendon health instead of dramatic promises. It honestly made modern recovery options feel much more advanced and encouraging overall.
3 weeks, 1 day
[PATCH 0/5] LoongArch64: Fix register notes and exception unwinding
by Ming Wang
This series fixes several LoongArch64 crash utility issues seen when
reading CPU register state and unwinding active tasks from vmcore files.
The first two patches fix register extraction from NT_PRSTATUS/crash
notes and initialize the pt_regs.regs offset used for active task register
fallback. The remaining patches improve backtracing across LoongArch
exception frames, fix the stack top boundary check for pt_regs, and avoid
a null eframe_search callback when bt -e is requested.
The NT_PRSTATUS register layout follows the LoongArch kernel
elf_gregset_t/struct pt_regs order: 32 GPRs followed by orig_a0, csr_era,
csr_badvaddr, csr_crmd, csr_prmd, csr_euen, csr_ecfg and csr_estat.
The exception unwinding changes only treat entry symbols that leave a
saved pt_regs at sp as exception frames.
Tested:
- LoongArch 3C6000 platform with vmcore
- make -C crash -j$(nproc) on x86_64 host
- gcc -DLOONGARCH64 -c -o /tmp/loongarch64-final.o loongarch64.c
- gcc -c -o /tmp/loongarch64-final-generic.o loongarch64.c
- git diff --check origin/master..HEAD
Ming Wang (5):
LoongArch64: Fix CPU registers reading from dump notes
LoongArch64: Fix pt_regs initialization for active tasks
LoongArch64: Support backtracing across exception boundaries
LoongArch64: Fix stack frame loop bounds for exception frames
LoongArch64: Add dummy eframe_search to avoid bt -e segfault
loongarch64.c | 78 +++++++++++++++++++++++++++++++++++++++------------
1 file changed, 60 insertions(+), 18 deletions(-)
--
2.43.0
3 weeks, 6 days
ways2well
by febit61013@gzeos.com
If you want to study evidence-based information regarding next-generation alternatives to invasive wrist surgeries, you should definitely set aside a few minutes to read through https://ways2well.com/blog/stem-cell-therapy-for-wrist-pain-what-you-need.... The blog layout is highly professional, addressing crucial safety standards and answering common patient inquiries regarding biological treatments. It serves as a perfect educational baseline to help you understand how cellular medicine is reshaping sports medicine and physical rehabilitation today.
4 weeks, 1 day
[PATCH v2] Fix unwinding with 32k stacks in ppc64le RHEL 9.4
by Lucas Oakley
In RHEL 9.4 ppc64le, the stack size was adjusted from 16k to
32k. As a result, ppc64_back_trace() can bail prematurely when
checking if the stack pointer exists in the range of the
range of the irq stacks, since SIZE(irq_ctx), used in
ppc64_in_irqstack(), is set to 16k. This patch ensures that
irq_ctx is updated to 32k if a 32k stack size is used.
Tested against:
el6 x86_64
el7 ppc64le s390x x86_64
el8 aarch64 ppc64le s390x x86_64
el9 aarch64 ppc64le s390x x86_64
el10 aarch64 ppc64le s390x x86_64
Without the commit:
crash> bt -c 3
PID: 17524 TASK: c0000000b2c0e400 CPU: 3 COMMAND: "xyz"
cannot find the stack info.
With the commit:
crash> bt -c 3
PID: 17524 TASK: c0000000b2c0e400 CPU: 3 COMMAND: "xyz"
#0 [c000001dff7d7c10] smp_call_function_single_async at c00000000028dd38
#1 [c000001dff7d7d30] _raw_spin_lock_irqsave at c000000001023f1c
#2 [c000001dff7d7d60] ibmvscsi_handle_crq at c0080000044635ec [ibmvscsi]
#3 [c000001dff7d7de0] ibmvscsi_task at c008000004463804 [ibmvscsi]
#4 [c000001dff7d7e30] tasklet_action_common.constprop.0 at c0000000001624cc
#5 [c000001dff7d7e90] __do_softirq at c0000000010244cc
#6 [c000001dff7d7f90] do_softirq_own_stack at c000000000016480
#7 [c000000140d67700] __irq_exit_rcu at c0000000001613b8
#8 [c000000140d67730] irq_exit at c000000000162170
#9 [c000000140d67750] do_IRQ at c000000000015fa4
#10 [c000000140d67780] hardware_interrupt_common_virt at c000000000009080
Hardware Interrupt [500] exception frame:
R0: c000000001023de0 R1: c000000140d67a90 R2: c000000002c02500
R3: c00800000b30269c R4: 0000000000000001 R5: 0000000000000001
R6: ffffffffffffffff R7: 0000000000000000 R8: 0000000000000000
R9: fffffffffffe0000 R10: 0000000000000002 R11: 0000000048422824
R12: c000000001023d70 R13: c000001dffffd480 R14: 00007ffd6ef6d238
R15: 0000000000000028 R16: c000001dfc1e2280 R17: c000001dfc1e2280
R18: 00000000ab97fa48 R19: 0000000000000000 R20: 0000000000000001
R21: 0000001df9ff0000 R22: 0000000000000028 R23: c0000000021f2280
R24: 0000000000000000 R25: c0000000021f2280 R26: c0000000021f2380
R27: 0000000000000000 R28: c00800000b30269c R29: 0000000000000000
R30: c000000002c47190 R31: 000000000020000b
NIP: c0000000000aea14 MSR: 800000000280b033 OR3: c0000000000ae944
CTR: c000000001023d70 LR: c000000001023de0 XER: 0000000020040001
CCR: 0000000088422824 MQ: 0000000000000000 DAR: 0000000000000001
DSISR: c0080000073b1e94 Syscall Result: 0000000000000000
[NIP : queued_spin_lock_slowpath+1204]
[LR : _raw_spin_lock+112]
#11 [c000000140d67a90] queued_spin_lock_slowpath at c0000000000aea14
#12 [c000000140d67bb0] _raw_spin_lock at c000000001023de0 (unreliable)
#13 [c000000140d67bd0] dm_blk_close at c00800000b2c6850 [dm_mod]
#14 [c000000140d67c00] blkdev_put_whole at c0000000007d2738
#15 [c000000140d67c30] bdev_release at c0000000007d3a38
#16 [c000000140d67c90] blkdev_release at c0000000007d4224
#17 [c000000140d67cb0] __fput at c0000000005d2e98
#18 [c000000140d67d00] task_work_run at c00000000018fb14
#19 [c000000140d67d50] do_notify_resume at c000000000020bd4
#20 [c000000140d67d80] interrupt_exit_user_prepare_main at c00000000002ed98
#21 [c000000140d67de0] syscall_exit_prepare at c00000000002f240
#22 [c000000140d67e10] system_call_vectored_common at c00000000000bff4
Signed-off-by: Lucas Oakley <soakley(a)redhat.com>
---
task.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/task.c b/task.c
index ec04b55..a398a8d 100644
--- a/task.c
+++ b/task.c
@@ -739,6 +739,18 @@ irqstacks_init(void)
if (!(tt->softirq_tasks = (ulong *)calloc(NR_CPUS, sizeof(ulong))))
error(FATAL, "cannot malloc softirq_tasks space.");
+ /*
+ * RHEL 9.4.z adjusted the stack size from 16k to 32k for
+ * ppc64le only. We need to ensure that SIZE(irq_ctx) is
+ * correctly set so the unwinder doesn't prematurely bail
+ * when switching between the kernel stack and irq stacks.
+ * The stack size is updated in task_init(), which calls
+ * this routine, irqstacks_init() after checking for the
+ * existence of irq_ctx.
+ */
+ if ((SIZE(irq_ctx) != -1) && (STACKSIZE() > SIZE(irq_ctx)))
+ ASSIGN_SIZE(irq_ctx) = STACKSIZE();
+
thread_info_buf = GETBUF(SIZE(irq_ctx));
if ((hard_sp = per_cpu_symbol_search("per_cpu__hardirq_ctx")) ||
--
2.52.0
4 weeks, 1 day
ANNA
by lava.lavalol228@gmail.com
A meal prep owner was tired of cheap containers that fogged up and cracked under hot food, until he tried these SafePro 24 oz shallow clear PET square containers from McDonald Paper – a 140‑count case of crystal‑clear PET that lets customers see every layer of salad or pasta, the shallow 1.5‑inch height is perfect for grab‑and‑go entrees without wasted space, and the durable design handles freezer storage and hot food up to 100°F without warping or leaking. Here's where he orders them now: https://www.mcdonaldpaper.com/safepro-sc4-24c-24-oz-shallow-clear-pet-squ...
4 weeks, 1 day
[PATCH] crash: symbols: Optimize symbol string matching overhead in numeric_forward()
by Rui Qi
The numeric_forward() function serves as the comparator for qsort() when
sorting kernel symbols. For a modern Linux kernel containing hundreds of
thousands of symbols (N), qsort() performs O(N log N) comparisons,
meaning this function is invoked millions of times during the startup
phase of the crash utility.
During these millions of comparisons, it frequently checks for specific
symbol names (e.g., "_stext", "kaslr_get_random_long") using the STREQ()
macro. STREQ() internally expands to string_exists() checks followed by a
full strcmp(), incurring significant function call overhead that cannot be
optimized out by the compiler at runtime.
By explicitly checking the first character of the symbol name
(e.g., x->name[0] == '_') before invoking STREQ(), we introduce a
lightweight "early reject" mechanism. Since the distribution of kernel
symbol starting characters is relatively sparse, this short-circuits the
evaluation for the vast majority of symbols, completely avoiding the
overhead of strcmp() macro expansion.
Additionally, since x->name could potentially be NULL, we must safely
guard the character access with an explicit non-null check (x->name &&)
to prevent segmentation faults.
This O(N log N) cumulative optimization yields a measurable performance
improvement in symbol sorting speed, which scales directly with the size
of the kernel symbol table.
Signed-off-by: Rui Qi <qirui.001(a)bytedance.com>
---
symbols.c | 40 ++++++++++++++++++++--------------------
1 file changed, 20 insertions(+), 20 deletions(-)
diff --git a/symbols.c b/symbols.c
index 8eb8b37abc23..736d9d96d606 100644
--- a/symbols.c
+++ b/symbols.c
@@ -14401,16 +14401,16 @@ numeric_forward(const void *P_x, const void *P_y)
error(FATAL, "bfd_minisymbol_to_symbol failed\n");
if (st->_stext_vmlinux == UNINITIALIZED) {
- if (STREQ(x->name, "_stext"))
+ if (x->name && x->name[0] == '_' && STREQ(x->name, "_stext"))
st->_stext_vmlinux = valueof(x);
- else if (STREQ(y->name, "_stext"))
+ else if (y->name && y->name[0] == '_' && STREQ(y->name, "_stext"))
st->_stext_vmlinux = valueof(y);
}
if (kt->flags2 & KASLR_CHECK) {
- if (STREQ(x->name, "kaslr_get_random_long") ||
- STREQ(y->name, "kaslr_get_random_long") ||
- STREQ(x->name, "module_load_offset") ||
- STREQ(y->name, "module_load_offset")) {
+ if ((x->name && x->name[0] == 'k' && STREQ(x->name, "kaslr_get_random_long")) ||
+ (y->name && y->name[0] == 'k' && STREQ(y->name, "kaslr_get_random_long")) ||
+ (x->name && x->name[0] == 'm' && STREQ(x->name, "module_load_offset")) ||
+ (y->name && y->name[0] == 'm' && STREQ(y->name, "module_load_offset"))) {
kt->flags2 &= ~KASLR_CHECK;
kt->flags2 |= (RELOC_AUTO|KASLR);
}
@@ -14418,36 +14418,36 @@ numeric_forward(const void *P_x, const void *P_y)
if (SADUMP_DUMPFILE() || QEMU_MEM_DUMP_NO_VMCOREINFO() || VMSS_DUMPFILE()) {
/* Need for kaslr_offset and phys_base */
- if (STREQ(x->name, "divide_error") ||
- STREQ(x->name, "asm_exc_divide_error"))
+ if ((x->name && x->name[0] == 'd' && STREQ(x->name, "divide_error")) ||
+ (x->name && x->name[0] == 'a' && STREQ(x->name, "asm_exc_divide_error")))
st->divide_error_vmlinux = valueof(x);
- else if (STREQ(y->name, "divide_error") ||
- STREQ(y->name, "asm_exc_divide_error"))
+ else if ((y->name && y->name[0] == 'd' && STREQ(y->name, "divide_error")) ||
+ (y->name && y->name[0] == 'a' && STREQ(y->name, "asm_exc_divide_error")))
st->divide_error_vmlinux = valueof(y);
- if (STREQ(x->name, "idt_table"))
+ if (x->name && x->name[0] == 'i' && STREQ(x->name, "idt_table"))
st->idt_table_vmlinux = valueof(x);
- else if (STREQ(y->name, "idt_table"))
+ else if (y->name && y->name[0] == 'i' && STREQ(y->name, "idt_table"))
st->idt_table_vmlinux = valueof(y);
- if (STREQ(x->name, "kaiser_init"))
+ if (x->name && x->name[0] == 'k' && STREQ(x->name, "kaiser_init"))
st->kaiser_init_vmlinux = valueof(x);
- else if (STREQ(y->name, "kaiser_init"))
+ else if (y->name && y->name[0] == 'k' && STREQ(y->name, "kaiser_init"))
st->kaiser_init_vmlinux = valueof(y);
- if (STREQ(x->name, "linux_banner"))
+ if (x->name && x->name[0] == 'l' && STREQ(x->name, "linux_banner"))
st->linux_banner_vmlinux = valueof(x);
- else if (STREQ(y->name, "linux_banner"))
+ else if (y->name && y->name[0] == 'l' && STREQ(y->name, "linux_banner"))
st->linux_banner_vmlinux = valueof(y);
- if (STREQ(x->name, "pti_init"))
+ if (x->name && x->name[0] == 'p' && STREQ(x->name, "pti_init"))
st->pti_init_vmlinux = valueof(x);
- else if (STREQ(y->name, "pti_init"))
+ else if (y->name && y->name[0] == 'p' && STREQ(y->name, "pti_init"))
st->pti_init_vmlinux = valueof(y);
- if (STREQ(x->name, "saved_command_line"))
+ if (x->name && x->name[0] == 's' && STREQ(x->name, "saved_command_line"))
st->saved_command_line_vmlinux = valueof(x);
- else if (STREQ(y->name, "saved_command_line"))
+ else if (y->name && y->name[0] == 's' && STREQ(y->name, "saved_command_line"))
st->saved_command_line_vmlinux = valueof(y);
}
--
2.20.1
4 weeks, 1 day