m68k updates for v5.2
- Drop arch_gettimeoffset and adopt clocksource API, - Defconfig updates. -----BEGIN PGP SIGNATURE----- iIsEABYIADMWIQQ9qaHoIs/1I4cXmEiKwlD9ZEnxcAUCXM/4FhUcZ2VlcnRAbGlu dXgtbTY4ay5vcmcACgkQisJQ/WRJ8XAUWgD7BWq1iIM19zUlj/eU8giee+OVkvoJ Tfy7UFUAp4R26kEBAKBWt991L3e5+BPgTHFmrJwkbpWun+wGm036lyzVe2YF =OBIz -----END PGP SIGNATURE----- Merge tag 'm68k-for-v5.2-tag1' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k Pull m68k updates from Geert Uytterhoeven: - drop arch_gettimeoffset and adopt clocksource API - defconfig updates * tag 'm68k-for-v5.2-tag1' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k: Documentation/features/time: Mark m68k having modern-timekeeping m68k: defconfig: Update defconfigs for v5.1-rc1 m68k: mvme16x: Handle timer counter overflow m68k: mvme16x: Convert to clocksource API m68k: mvme147: Handle timer counter overflow m68k: mvme147: Convert to clocksource API m68k: mac: Convert to clocksource API m68k: hp300: Handle timer counter overflow m68k: hp300: Convert to clocksource API m68k: bvme6000: Convert to clocksource API m68k: atari: Convert to clocksource API m68k: amiga: Convert to clocksource API m68k: Drop ARCH_USES_GETTIMEOFFSET m68k: apollo, q40, sun3, sun3x: Remove arch_gettimeoffset implementations m68k: mac: Fix VIA timer counter accesses m68k: Call timer_interrupt() with interrupts disabled
This commit is contained in:
commit
ccbc2e5ed1
@ -15,7 +15,7 @@
|
||||
| h8300: | ok |
|
||||
| hexagon: | ok |
|
||||
| ia64: | ok |
|
||||
| m68k: | TODO |
|
||||
| m68k: | ok |
|
||||
| microblaze: | ok |
|
||||
| mips: | ok |
|
||||
| nds32: | ok |
|
||||
|
@ -20,7 +20,6 @@ config M68K
|
||||
select GENERIC_STRNCPY_FROM_USER if MMU
|
||||
select GENERIC_STRNLEN_USER if MMU
|
||||
select ARCH_WANT_IPC_PARSE_VERSION
|
||||
select ARCH_USES_GETTIMEOFFSET if MMU && !COLDFIRE
|
||||
select HAVE_FUTEX_CMPXCHG if MMU && FUTEX
|
||||
select HAVE_MOD_ARCH_SPECIFIC
|
||||
select MODULES_USE_ELF_REL
|
||||
|
@ -88,10 +88,19 @@ static irqreturn_t cia_handler(int irq, void *dev_id)
|
||||
struct ciabase *base = dev_id;
|
||||
int mach_irq;
|
||||
unsigned char ints;
|
||||
unsigned long flags;
|
||||
|
||||
/* Interrupts get disabled while the timer irq flag is cleared and
|
||||
* the timer interrupt serviced.
|
||||
*/
|
||||
mach_irq = base->cia_irq;
|
||||
local_irq_save(flags);
|
||||
ints = cia_set_irq(base, CIA_ICR_ALL);
|
||||
amiga_custom.intreq = base->int_mask;
|
||||
if (ints & 1)
|
||||
generic_handle_irq(mach_irq);
|
||||
local_irq_restore(flags);
|
||||
mach_irq++, ints >>= 1;
|
||||
for (; ints; mach_irq++, ints >>= 1) {
|
||||
if (ints & 1)
|
||||
generic_handle_irq(mach_irq);
|
||||
|
@ -17,6 +17,7 @@
|
||||
#include <linux/mm.h>
|
||||
#include <linux/seq_file.h>
|
||||
#include <linux/tty.h>
|
||||
#include <linux/clocksource.h>
|
||||
#include <linux/console.h>
|
||||
#include <linux/rtc.h>
|
||||
#include <linux/init.h>
|
||||
@ -95,8 +96,6 @@ static char amiga_model_name[13] = "Amiga ";
|
||||
static void amiga_sched_init(irq_handler_t handler);
|
||||
static void amiga_get_model(char *model);
|
||||
static void amiga_get_hardware_list(struct seq_file *m);
|
||||
/* amiga specific timer functions */
|
||||
static u32 amiga_gettimeoffset(void);
|
||||
extern void amiga_mksound(unsigned int count, unsigned int ticks);
|
||||
static void amiga_reset(void);
|
||||
extern void amiga_init_sound(void);
|
||||
@ -386,7 +385,6 @@ void __init config_amiga(void)
|
||||
mach_init_IRQ = amiga_init_IRQ;
|
||||
mach_get_model = amiga_get_model;
|
||||
mach_get_hardware_list = amiga_get_hardware_list;
|
||||
arch_gettimeoffset = amiga_gettimeoffset;
|
||||
|
||||
/*
|
||||
* default MAX_DMA=0xffffffff on all machines. If we don't do so, the SCSI
|
||||
@ -464,7 +462,29 @@ void __init config_amiga(void)
|
||||
*(unsigned char *)ZTWO_VADDR(0xde0002) |= 0x80;
|
||||
}
|
||||
|
||||
static u64 amiga_read_clk(struct clocksource *cs);
|
||||
|
||||
static struct clocksource amiga_clk = {
|
||||
.name = "ciab",
|
||||
.rating = 250,
|
||||
.read = amiga_read_clk,
|
||||
.mask = CLOCKSOURCE_MASK(32),
|
||||
.flags = CLOCK_SOURCE_IS_CONTINUOUS,
|
||||
};
|
||||
|
||||
static unsigned short jiffy_ticks;
|
||||
static u32 clk_total, clk_offset;
|
||||
|
||||
static irqreturn_t ciab_timer_handler(int irq, void *dev_id)
|
||||
{
|
||||
irq_handler_t timer_routine = dev_id;
|
||||
|
||||
clk_total += jiffy_ticks;
|
||||
clk_offset = 0;
|
||||
timer_routine(0, NULL);
|
||||
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
static void __init amiga_sched_init(irq_handler_t timer_routine)
|
||||
{
|
||||
@ -484,19 +504,22 @@ static void __init amiga_sched_init(irq_handler_t timer_routine)
|
||||
* Please don't change this to use ciaa, as it interferes with the
|
||||
* SCSI code. We'll have to take a look at this later
|
||||
*/
|
||||
if (request_irq(IRQ_AMIGA_CIAB_TA, timer_routine, 0, "timer", NULL))
|
||||
if (request_irq(IRQ_AMIGA_CIAB_TA, ciab_timer_handler, IRQF_TIMER,
|
||||
"timer", timer_routine))
|
||||
pr_err("Couldn't register timer interrupt\n");
|
||||
/* start timer */
|
||||
ciab.cra |= 0x11;
|
||||
|
||||
clocksource_register_hz(&amiga_clk, amiga_eclock);
|
||||
}
|
||||
|
||||
#define TICK_SIZE 10000
|
||||
|
||||
/* This is always executed with interrupts disabled. */
|
||||
static u32 amiga_gettimeoffset(void)
|
||||
static u64 amiga_read_clk(struct clocksource *cs)
|
||||
{
|
||||
unsigned short hi, lo, hi2;
|
||||
u32 ticks, offset = 0;
|
||||
unsigned long flags;
|
||||
u32 ticks;
|
||||
|
||||
local_irq_save(flags);
|
||||
|
||||
/* read CIA B timer A current value */
|
||||
hi = ciab.tahi;
|
||||
@ -513,12 +536,14 @@ static u32 amiga_gettimeoffset(void)
|
||||
if (ticks > jiffy_ticks / 2)
|
||||
/* check for pending interrupt */
|
||||
if (cia_set_irq(&ciab_base, 0) & CIA_ICR_TA)
|
||||
offset = 10000;
|
||||
clk_offset = jiffy_ticks;
|
||||
|
||||
ticks = jiffy_ticks - ticks;
|
||||
ticks = (10000 * ticks) / jiffy_ticks;
|
||||
ticks += clk_offset + clk_total;
|
||||
|
||||
return (ticks + offset) * 1000;
|
||||
local_irq_restore(flags);
|
||||
|
||||
return ticks;
|
||||
}
|
||||
|
||||
static void amiga_reset(void) __noreturn;
|
||||
|
@ -29,7 +29,6 @@ u_long apollo_model;
|
||||
|
||||
extern void dn_sched_init(irq_handler_t handler);
|
||||
extern void dn_init_IRQ(void);
|
||||
extern u32 dn_gettimeoffset(void);
|
||||
extern int dn_dummy_hwclk(int, struct rtc_time *);
|
||||
extern void dn_dummy_reset(void);
|
||||
#ifdef CONFIG_HEARTBEAT
|
||||
@ -152,7 +151,6 @@ void __init config_apollo(void)
|
||||
|
||||
mach_sched_init=dn_sched_init; /* */
|
||||
mach_init_IRQ=dn_init_IRQ;
|
||||
arch_gettimeoffset = dn_gettimeoffset;
|
||||
mach_max_dma_address = 0xffffffff;
|
||||
mach_hwclk = dn_dummy_hwclk; /* */
|
||||
mach_reset = dn_dummy_reset; /* */
|
||||
@ -205,11 +203,6 @@ void dn_sched_init(irq_handler_t timer_routine)
|
||||
pr_err("Couldn't register timer interrupt\n");
|
||||
}
|
||||
|
||||
u32 dn_gettimeoffset(void)
|
||||
{
|
||||
return 0xdeadbeef;
|
||||
}
|
||||
|
||||
int dn_dummy_hwclk(int op, struct rtc_time *t) {
|
||||
|
||||
|
||||
|
@ -142,7 +142,7 @@ struct mfptimerbase {
|
||||
.name = "MFP Timer D"
|
||||
};
|
||||
|
||||
static irqreturn_t mfptimer_handler(int irq, void *dev_id)
|
||||
static irqreturn_t mfp_timer_d_handler(int irq, void *dev_id)
|
||||
{
|
||||
struct mfptimerbase *base = dev_id;
|
||||
int mach_irq;
|
||||
@ -344,7 +344,7 @@ void __init atari_init_IRQ(void)
|
||||
st_mfp.tim_ct_cd = (st_mfp.tim_ct_cd & 0xf0) | 0x6;
|
||||
|
||||
/* request timer D dispatch handler */
|
||||
if (request_irq(IRQ_MFP_TIMD, mfptimer_handler, IRQF_SHARED,
|
||||
if (request_irq(IRQ_MFP_TIMD, mfp_timer_d_handler, IRQF_SHARED,
|
||||
stmfp_base.name, &stmfp_base))
|
||||
pr_err("Couldn't register %s interrupt\n", stmfp_base.name);
|
||||
|
||||
|
@ -78,7 +78,6 @@ static void atari_heartbeat(int on);
|
||||
|
||||
/* atari specific timer functions (in time.c) */
|
||||
extern void atari_sched_init(irq_handler_t);
|
||||
extern u32 atari_gettimeoffset(void);
|
||||
extern int atari_mste_hwclk (int, struct rtc_time *);
|
||||
extern int atari_tt_hwclk (int, struct rtc_time *);
|
||||
|
||||
@ -205,7 +204,6 @@ void __init config_atari(void)
|
||||
mach_init_IRQ = atari_init_IRQ;
|
||||
mach_get_model = atari_get_model;
|
||||
mach_get_hardware_list = atari_get_hardware_list;
|
||||
arch_gettimeoffset = atari_gettimeoffset;
|
||||
mach_reset = atari_reset;
|
||||
mach_max_dma_address = 0xffffff;
|
||||
#if IS_ENABLED(CONFIG_INPUT_M68K_BEEP)
|
||||
|
@ -16,6 +16,7 @@
|
||||
#include <linux/init.h>
|
||||
#include <linux/rtc.h>
|
||||
#include <linux/bcd.h>
|
||||
#include <linux/clocksource.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/export.h>
|
||||
|
||||
@ -24,6 +25,35 @@
|
||||
DEFINE_SPINLOCK(rtc_lock);
|
||||
EXPORT_SYMBOL_GPL(rtc_lock);
|
||||
|
||||
static u64 atari_read_clk(struct clocksource *cs);
|
||||
|
||||
static struct clocksource atari_clk = {
|
||||
.name = "mfp",
|
||||
.rating = 100,
|
||||
.read = atari_read_clk,
|
||||
.mask = CLOCKSOURCE_MASK(32),
|
||||
.flags = CLOCK_SOURCE_IS_CONTINUOUS,
|
||||
};
|
||||
|
||||
static u32 clk_total;
|
||||
static u8 last_timer_count;
|
||||
|
||||
static irqreturn_t mfp_timer_c_handler(int irq, void *dev_id)
|
||||
{
|
||||
irq_handler_t timer_routine = dev_id;
|
||||
unsigned long flags;
|
||||
|
||||
local_irq_save(flags);
|
||||
do {
|
||||
last_timer_count = st_mfp.tim_dt_c;
|
||||
} while (last_timer_count == 1);
|
||||
clk_total += INT_TICKS;
|
||||
timer_routine(0, NULL);
|
||||
local_irq_restore(flags);
|
||||
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
void __init
|
||||
atari_sched_init(irq_handler_t timer_routine)
|
||||
{
|
||||
@ -32,31 +62,33 @@ atari_sched_init(irq_handler_t timer_routine)
|
||||
/* start timer C, div = 1:100 */
|
||||
st_mfp.tim_ct_cd = (st_mfp.tim_ct_cd & 15) | 0x60;
|
||||
/* install interrupt service routine for MFP Timer C */
|
||||
if (request_irq(IRQ_MFP_TIMC, timer_routine, 0, "timer", timer_routine))
|
||||
if (request_irq(IRQ_MFP_TIMC, mfp_timer_c_handler, IRQF_TIMER, "timer",
|
||||
timer_routine))
|
||||
pr_err("Couldn't register timer interrupt\n");
|
||||
|
||||
clocksource_register_hz(&atari_clk, INT_CLK);
|
||||
}
|
||||
|
||||
/* ++andreas: gettimeoffset fixed to check for pending interrupt */
|
||||
|
||||
#define TICK_SIZE 10000
|
||||
|
||||
/* This is always executed with interrupts disabled. */
|
||||
u32 atari_gettimeoffset(void)
|
||||
static u64 atari_read_clk(struct clocksource *cs)
|
||||
{
|
||||
u32 ticks, offset = 0;
|
||||
unsigned long flags;
|
||||
u8 count;
|
||||
u32 ticks;
|
||||
|
||||
/* read MFP timer C current value */
|
||||
ticks = st_mfp.tim_dt_c;
|
||||
/* The probability of underflow is less than 2% */
|
||||
if (ticks > INT_TICKS - INT_TICKS / 50)
|
||||
/* Check for pending timer interrupt */
|
||||
if (st_mfp.int_pn_b & (1 << 5))
|
||||
offset = TICK_SIZE;
|
||||
local_irq_save(flags);
|
||||
/* Ensure that the count is monotonically decreasing, even though
|
||||
* the result may briefly stop changing after counter wrap-around.
|
||||
*/
|
||||
count = min(st_mfp.tim_dt_c, last_timer_count);
|
||||
last_timer_count = count;
|
||||
|
||||
ticks = INT_TICKS - ticks;
|
||||
ticks = ticks * 10000L / INT_TICKS;
|
||||
ticks = INT_TICKS - count;
|
||||
ticks += clk_total;
|
||||
local_irq_restore(flags);
|
||||
|
||||
return (ticks + offset) * 1000;
|
||||
return ticks;
|
||||
}
|
||||
|
||||
|
||||
|
@ -18,6 +18,7 @@
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/mm.h>
|
||||
#include <linux/tty.h>
|
||||
#include <linux/clocksource.h>
|
||||
#include <linux/console.h>
|
||||
#include <linux/linkage.h>
|
||||
#include <linux/init.h>
|
||||
@ -39,16 +40,10 @@
|
||||
|
||||
static void bvme6000_get_model(char *model);
|
||||
extern void bvme6000_sched_init(irq_handler_t handler);
|
||||
extern u32 bvme6000_gettimeoffset(void);
|
||||
extern int bvme6000_hwclk (int, struct rtc_time *);
|
||||
extern void bvme6000_reset (void);
|
||||
void bvme6000_set_vectors (void);
|
||||
|
||||
/* Save tick handler routine pointer, will point to xtime_update() in
|
||||
* kernel/timer/timekeeping.c, called via bvme6000_process_int() */
|
||||
|
||||
static irq_handler_t tick_handler;
|
||||
|
||||
|
||||
int __init bvme6000_parse_bootinfo(const struct bi_record *bi)
|
||||
{
|
||||
@ -110,7 +105,6 @@ void __init config_bvme6000(void)
|
||||
mach_max_dma_address = 0xffffffff;
|
||||
mach_sched_init = bvme6000_sched_init;
|
||||
mach_init_IRQ = bvme6000_init_IRQ;
|
||||
arch_gettimeoffset = bvme6000_gettimeoffset;
|
||||
mach_hwclk = bvme6000_hwclk;
|
||||
mach_reset = bvme6000_reset;
|
||||
mach_get_model = bvme6000_get_model;
|
||||
@ -154,15 +148,38 @@ irqreturn_t bvme6000_abort_int (int irq, void *dev_id)
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
static u64 bvme6000_read_clk(struct clocksource *cs);
|
||||
|
||||
static struct clocksource bvme6000_clk = {
|
||||
.name = "rtc",
|
||||
.rating = 250,
|
||||
.read = bvme6000_read_clk,
|
||||
.mask = CLOCKSOURCE_MASK(32),
|
||||
.flags = CLOCK_SOURCE_IS_CONTINUOUS,
|
||||
};
|
||||
|
||||
static u32 clk_total, clk_offset;
|
||||
|
||||
#define RTC_TIMER_CLOCK_FREQ 8000000
|
||||
#define RTC_TIMER_CYCLES (RTC_TIMER_CLOCK_FREQ / HZ)
|
||||
#define RTC_TIMER_COUNT ((RTC_TIMER_CYCLES / 2) - 1)
|
||||
|
||||
static irqreturn_t bvme6000_timer_int (int irq, void *dev_id)
|
||||
{
|
||||
irq_handler_t timer_routine = dev_id;
|
||||
unsigned long flags;
|
||||
volatile RtcPtr_t rtc = (RtcPtr_t)BVME_RTC_BASE;
|
||||
unsigned char msr = rtc->msr & 0xc0;
|
||||
unsigned char msr;
|
||||
|
||||
local_irq_save(flags);
|
||||
msr = rtc->msr & 0xc0;
|
||||
rtc->msr = msr | 0x20; /* Ack the interrupt */
|
||||
clk_total += RTC_TIMER_CYCLES;
|
||||
clk_offset = 0;
|
||||
timer_routine(0, NULL);
|
||||
local_irq_restore(flags);
|
||||
|
||||
return tick_handler(irq, dev_id);
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -181,14 +198,13 @@ void bvme6000_sched_init (irq_handler_t timer_routine)
|
||||
|
||||
rtc->msr = 0; /* Ensure timer registers accessible */
|
||||
|
||||
tick_handler = timer_routine;
|
||||
if (request_irq(BVME_IRQ_RTC, bvme6000_timer_int, 0,
|
||||
"timer", bvme6000_timer_int))
|
||||
if (request_irq(BVME_IRQ_RTC, bvme6000_timer_int, IRQF_TIMER, "timer",
|
||||
timer_routine))
|
||||
panic ("Couldn't register timer int");
|
||||
|
||||
rtc->t1cr_omr = 0x04; /* Mode 2, ext clk */
|
||||
rtc->t1msb = 39999 >> 8;
|
||||
rtc->t1lsb = 39999 & 0xff;
|
||||
rtc->t1msb = RTC_TIMER_COUNT >> 8;
|
||||
rtc->t1lsb = RTC_TIMER_COUNT & 0xff;
|
||||
rtc->irr_icr1 &= 0xef; /* Route timer 1 to INTR pin */
|
||||
rtc->msr = 0x40; /* Access int.cntrl, etc */
|
||||
rtc->pfr_icr0 = 0x80; /* Just timer 1 ints enabled */
|
||||
@ -200,14 +216,14 @@ void bvme6000_sched_init (irq_handler_t timer_routine)
|
||||
|
||||
rtc->msr = msr;
|
||||
|
||||
clocksource_register_hz(&bvme6000_clk, RTC_TIMER_CLOCK_FREQ);
|
||||
|
||||
if (request_irq(BVME_IRQ_ABORT, bvme6000_abort_int, 0,
|
||||
"abort", bvme6000_abort_int))
|
||||
panic ("Couldn't register abort int");
|
||||
}
|
||||
|
||||
|
||||
/* This is always executed with interrupts disabled. */
|
||||
|
||||
/*
|
||||
* NOTE: Don't accept any readings within 5us of rollover, as
|
||||
* the T1INT bit may be a little slow getting set. There is also
|
||||
@ -215,14 +231,18 @@ void bvme6000_sched_init (irq_handler_t timer_routine)
|
||||
* results...
|
||||
*/
|
||||
|
||||
u32 bvme6000_gettimeoffset(void)
|
||||
static u64 bvme6000_read_clk(struct clocksource *cs)
|
||||
{
|
||||
unsigned long flags;
|
||||
volatile RtcPtr_t rtc = (RtcPtr_t)BVME_RTC_BASE;
|
||||
volatile PitRegsPtr pit = (PitRegsPtr)BVME_PIT_BASE;
|
||||
unsigned char msr = rtc->msr & 0xc0;
|
||||
unsigned char msr, msb;
|
||||
unsigned char t1int, t1op;
|
||||
u32 v = 800000, ov;
|
||||
|
||||
local_irq_save(flags);
|
||||
|
||||
msr = rtc->msr & 0xc0;
|
||||
rtc->msr = 0; /* Ensure timer registers accessible */
|
||||
|
||||
do {
|
||||
@ -230,22 +250,25 @@ u32 bvme6000_gettimeoffset(void)
|
||||
t1int = rtc->msr & 0x20;
|
||||
t1op = pit->pcdr & 0x04;
|
||||
rtc->t1cr_omr |= 0x40; /* Latch timer1 */
|
||||
v = rtc->t1msb << 8; /* Read timer1 */
|
||||
v |= rtc->t1lsb; /* Read timer1 */
|
||||
msb = rtc->t1msb; /* Read timer1 */
|
||||
v = (msb << 8) | rtc->t1lsb; /* Read timer1 */
|
||||
} while (t1int != (rtc->msr & 0x20) ||
|
||||
t1op != (pit->pcdr & 0x04) ||
|
||||
abs(ov-v) > 80 ||
|
||||
v > 39960);
|
||||
v > RTC_TIMER_COUNT - (RTC_TIMER_COUNT / 100));
|
||||
|
||||
v = 39999 - v;
|
||||
v = RTC_TIMER_COUNT - v;
|
||||
if (!t1op) /* If in second half cycle.. */
|
||||
v += 40000;
|
||||
v /= 8; /* Convert ticks to microseconds */
|
||||
if (t1int)
|
||||
v += 10000; /* Int pending, + 10ms */
|
||||
v += RTC_TIMER_CYCLES / 2;
|
||||
if (msb > 0 && t1int)
|
||||
clk_offset = RTC_TIMER_CYCLES;
|
||||
rtc->msr = msr;
|
||||
|
||||
return v * 1000;
|
||||
v += clk_offset + clk_total;
|
||||
|
||||
local_irq_restore(flags);
|
||||
|
||||
return v;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -56,6 +56,7 @@ CONFIG_TLS=m
|
||||
CONFIG_XFRM_MIGRATE=y
|
||||
CONFIG_NET_KEY=y
|
||||
CONFIG_XDP_SOCKETS=y
|
||||
CONFIG_XDP_SOCKETS_DIAG=m
|
||||
CONFIG_INET=y
|
||||
CONFIG_IP_PNP=y
|
||||
CONFIG_IP_PNP_DHCP=y
|
||||
@ -210,9 +211,6 @@ CONFIG_NFT_FIB_IPV4=m
|
||||
CONFIG_NF_TABLES_ARP=y
|
||||
CONFIG_NF_FLOW_TABLE_IPV4=m
|
||||
CONFIG_NF_LOG_ARP=m
|
||||
CONFIG_NFT_CHAIN_NAT_IPV4=m
|
||||
CONFIG_NFT_MASQ_IPV4=m
|
||||
CONFIG_NFT_REDIR_IPV4=m
|
||||
CONFIG_IP_NF_IPTABLES=m
|
||||
CONFIG_IP_NF_MATCH_AH=m
|
||||
CONFIG_IP_NF_MATCH_ECN=m
|
||||
@ -234,9 +232,6 @@ CONFIG_IP_NF_ARPTABLES=m
|
||||
CONFIG_IP_NF_ARPFILTER=m
|
||||
CONFIG_IP_NF_ARP_MANGLE=m
|
||||
CONFIG_NFT_CHAIN_ROUTE_IPV6=m
|
||||
CONFIG_NFT_CHAIN_NAT_IPV6=m
|
||||
CONFIG_NFT_MASQ_IPV6=m
|
||||
CONFIG_NFT_REDIR_IPV6=m
|
||||
CONFIG_NFT_DUP_IPV6=m
|
||||
CONFIG_NFT_FIB_IPV6=m
|
||||
CONFIG_NF_FLOW_TABLE_IPV6=m
|
||||
@ -313,7 +308,6 @@ CONFIG_AF_KCM=m
|
||||
# CONFIG_WIRELESS is not set
|
||||
CONFIG_PSAMPLE=m
|
||||
CONFIG_NET_IFE=m
|
||||
CONFIG_NET_DEVLINK=m
|
||||
# CONFIG_UEVENT_HELPER is not set
|
||||
CONFIG_DEVTMPFS=y
|
||||
CONFIG_DEVTMPFS_MOUNT=y
|
||||
@ -460,12 +454,12 @@ CONFIG_RTC_DRV_RP5C01=m
|
||||
# CONFIG_VIRTIO_MENU is not set
|
||||
# CONFIG_IOMMU_SUPPORT is not set
|
||||
CONFIG_DAX=m
|
||||
# CONFIG_VALIDATE_FS_PARSER is not set
|
||||
CONFIG_EXT4_FS=y
|
||||
CONFIG_REISERFS_FS=m
|
||||
CONFIG_JFS_FS=m
|
||||
CONFIG_OCFS2_FS=m
|
||||
# CONFIG_OCFS2_DEBUG_MASKLOG is not set
|
||||
CONFIG_FS_ENCRYPTION=m
|
||||
CONFIG_FANOTIFY=y
|
||||
CONFIG_QUOTA_NETLINK_INTERFACE=y
|
||||
# CONFIG_PRINT_QUOTA_WARNING is not set
|
||||
@ -573,9 +567,11 @@ CONFIG_CRYPTO_AEGIS256=m
|
||||
CONFIG_CRYPTO_MORUS640=m
|
||||
CONFIG_CRYPTO_MORUS1280=m
|
||||
CONFIG_CRYPTO_CFB=m
|
||||
CONFIG_CRYPTO_CTS=m
|
||||
CONFIG_CRYPTO_LRW=m
|
||||
CONFIG_CRYPTO_OFB=m
|
||||
CONFIG_CRYPTO_PCBC=m
|
||||
CONFIG_CRYPTO_XTS=m
|
||||
CONFIG_CRYPTO_KEYWRAP=m
|
||||
CONFIG_CRYPTO_ADIANTUM=m
|
||||
CONFIG_CRYPTO_XCBC=m
|
||||
@ -640,6 +636,7 @@ CONFIG_TEST_OVERFLOW=m
|
||||
CONFIG_TEST_RHASHTABLE=m
|
||||
CONFIG_TEST_HASH=m
|
||||
CONFIG_TEST_IDA=m
|
||||
CONFIG_TEST_VMALLOC=m
|
||||
CONFIG_TEST_USER_COPY=m
|
||||
CONFIG_TEST_BPF=m
|
||||
CONFIG_FIND_BIT_BENCHMARK=m
|
||||
@ -649,4 +646,5 @@ CONFIG_TEST_UDELAY=m
|
||||
CONFIG_TEST_STATIC_KEYS=m
|
||||
CONFIG_TEST_KMOD=m
|
||||
CONFIG_TEST_MEMCAT_P=m
|
||||
CONFIG_TEST_STACKINIT=m
|
||||
CONFIG_EARLY_PRINTK=y
|
||||
|
@ -52,6 +52,7 @@ CONFIG_TLS=m
|
||||
CONFIG_XFRM_MIGRATE=y
|
||||
CONFIG_NET_KEY=y
|
||||
CONFIG_XDP_SOCKETS=y
|
||||
CONFIG_XDP_SOCKETS_DIAG=m
|
||||
CONFIG_INET=y
|
||||
CONFIG_IP_PNP=y
|
||||
CONFIG_IP_PNP_DHCP=y
|
||||
@ -206,9 +207,6 @@ CONFIG_NFT_FIB_IPV4=m
|
||||
CONFIG_NF_TABLES_ARP=y
|
||||
CONFIG_NF_FLOW_TABLE_IPV4=m
|
||||
CONFIG_NF_LOG_ARP=m
|
||||
CONFIG_NFT_CHAIN_NAT_IPV4=m
|
||||
CONFIG_NFT_MASQ_IPV4=m
|
||||
CONFIG_NFT_REDIR_IPV4=m
|
||||
CONFIG_IP_NF_IPTABLES=m
|
||||
CONFIG_IP_NF_MATCH_AH=m
|
||||
CONFIG_IP_NF_MATCH_ECN=m
|
||||
@ -230,9 +228,6 @@ CONFIG_IP_NF_ARPTABLES=m
|
||||
CONFIG_IP_NF_ARPFILTER=m
|
||||
CONFIG_IP_NF_ARP_MANGLE=m
|
||||
CONFIG_NFT_CHAIN_ROUTE_IPV6=m
|
||||
CONFIG_NFT_CHAIN_NAT_IPV6=m
|
||||
CONFIG_NFT_MASQ_IPV6=m
|
||||
CONFIG_NFT_REDIR_IPV6=m
|
||||
CONFIG_NFT_DUP_IPV6=m
|
||||
CONFIG_NFT_FIB_IPV6=m
|
||||
CONFIG_NF_FLOW_TABLE_IPV6=m
|
||||
@ -309,7 +304,6 @@ CONFIG_AF_KCM=m
|
||||
# CONFIG_WIRELESS is not set
|
||||
CONFIG_PSAMPLE=m
|
||||
CONFIG_NET_IFE=m
|
||||
CONFIG_NET_DEVLINK=m
|
||||
# CONFIG_UEVENT_HELPER is not set
|
||||
CONFIG_DEVTMPFS=y
|
||||
CONFIG_DEVTMPFS_MOUNT=y
|
||||
@ -420,12 +414,12 @@ CONFIG_RTC_DRV_GENERIC=m
|
||||
# CONFIG_VIRTIO_MENU is not set
|
||||
# CONFIG_IOMMU_SUPPORT is not set
|
||||
CONFIG_DAX=m
|
||||
# CONFIG_VALIDATE_FS_PARSER is not set
|
||||
CONFIG_EXT4_FS=y
|
||||
CONFIG_REISERFS_FS=m
|
||||
CONFIG_JFS_FS=m
|
||||
CONFIG_OCFS2_FS=m
|
||||
# CONFIG_OCFS2_DEBUG_MASKLOG is not set
|
||||
CONFIG_FS_ENCRYPTION=m
|
||||
CONFIG_FANOTIFY=y
|
||||
CONFIG_QUOTA_NETLINK_INTERFACE=y
|
||||
# CONFIG_PRINT_QUOTA_WARNING is not set
|
||||
@ -533,9 +527,11 @@ CONFIG_CRYPTO_AEGIS256=m
|
||||
CONFIG_CRYPTO_MORUS640=m
|
||||
CONFIG_CRYPTO_MORUS1280=m
|
||||
CONFIG_CRYPTO_CFB=m
|
||||
CONFIG_CRYPTO_CTS=m
|
||||
CONFIG_CRYPTO_LRW=m
|
||||
CONFIG_CRYPTO_OFB=m
|
||||
CONFIG_CRYPTO_PCBC=m
|
||||
CONFIG_CRYPTO_XTS=m
|
||||
CONFIG_CRYPTO_KEYWRAP=m
|
||||
CONFIG_CRYPTO_ADIANTUM=m
|
||||
CONFIG_CRYPTO_XCBC=m
|
||||
@ -600,6 +596,7 @@ CONFIG_TEST_OVERFLOW=m
|
||||
CONFIG_TEST_RHASHTABLE=m
|
||||
CONFIG_TEST_HASH=m
|
||||
CONFIG_TEST_IDA=m
|
||||
CONFIG_TEST_VMALLOC=m
|
||||
CONFIG_TEST_USER_COPY=m
|
||||
CONFIG_TEST_BPF=m
|
||||
CONFIG_FIND_BIT_BENCHMARK=m
|
||||
@ -609,4 +606,5 @@ CONFIG_TEST_UDELAY=m
|
||||
CONFIG_TEST_STATIC_KEYS=m
|
||||
CONFIG_TEST_KMOD=m
|
||||
CONFIG_TEST_MEMCAT_P=m
|
||||
CONFIG_TEST_STACKINIT=m
|
||||
CONFIG_EARLY_PRINTK=y
|
||||
|
@ -59,6 +59,7 @@ CONFIG_TLS=m
|
||||
CONFIG_XFRM_MIGRATE=y
|
||||
CONFIG_NET_KEY=y
|
||||
CONFIG_XDP_SOCKETS=y
|
||||
CONFIG_XDP_SOCKETS_DIAG=m
|
||||
CONFIG_INET=y
|
||||
CONFIG_IP_PNP=y
|
||||
CONFIG_IP_PNP_DHCP=y
|
||||
@ -213,9 +214,6 @@ CONFIG_NFT_FIB_IPV4=m
|
||||
CONFIG_NF_TABLES_ARP=y
|
||||
CONFIG_NF_FLOW_TABLE_IPV4=m
|
||||
CONFIG_NF_LOG_ARP=m
|
||||
CONFIG_NFT_CHAIN_NAT_IPV4=m
|
||||
CONFIG_NFT_MASQ_IPV4=m
|
||||
CONFIG_NFT_REDIR_IPV4=m
|
||||
CONFIG_IP_NF_IPTABLES=m
|
||||
CONFIG_IP_NF_MATCH_AH=m
|
||||
CONFIG_IP_NF_MATCH_ECN=m
|
||||
@ -237,9 +235,6 @@ CONFIG_IP_NF_ARPTABLES=m
|
||||
CONFIG_IP_NF_ARPFILTER=m
|
||||
CONFIG_IP_NF_ARP_MANGLE=m
|
||||
CONFIG_NFT_CHAIN_ROUTE_IPV6=m
|
||||
CONFIG_NFT_CHAIN_NAT_IPV6=m
|
||||
CONFIG_NFT_MASQ_IPV6=m
|
||||
CONFIG_NFT_REDIR_IPV6=m
|
||||
CONFIG_NFT_DUP_IPV6=m
|
||||
CONFIG_NFT_FIB_IPV6=m
|
||||
CONFIG_NF_FLOW_TABLE_IPV6=m
|
||||
@ -316,7 +311,6 @@ CONFIG_AF_KCM=m
|
||||
# CONFIG_WIRELESS is not set
|
||||
CONFIG_PSAMPLE=m
|
||||
CONFIG_NET_IFE=m
|
||||
CONFIG_NET_DEVLINK=m
|
||||
# CONFIG_UEVENT_HELPER is not set
|
||||
CONFIG_DEVTMPFS=y
|
||||
CONFIG_DEVTMPFS_MOUNT=y
|
||||
@ -442,12 +436,12 @@ CONFIG_RTC_DRV_GENERIC=m
|
||||
# CONFIG_VIRTIO_MENU is not set
|
||||
# CONFIG_IOMMU_SUPPORT is not set
|
||||
CONFIG_DAX=m
|
||||
# CONFIG_VALIDATE_FS_PARSER is not set
|
||||
CONFIG_EXT4_FS=y
|
||||
CONFIG_REISERFS_FS=m
|
||||
CONFIG_JFS_FS=m
|
||||
CONFIG_OCFS2_FS=m
|
||||
# CONFIG_OCFS2_DEBUG_MASKLOG is not set
|
||||
CONFIG_FS_ENCRYPTION=m
|
||||
CONFIG_FANOTIFY=y
|
||||
CONFIG_QUOTA_NETLINK_INTERFACE=y
|
||||
# CONFIG_PRINT_QUOTA_WARNING is not set
|
||||
@ -555,9 +549,11 @@ CONFIG_CRYPTO_AEGIS256=m
|
||||
CONFIG_CRYPTO_MORUS640=m
|
||||
CONFIG_CRYPTO_MORUS1280=m
|
||||
CONFIG_CRYPTO_CFB=m
|
||||
CONFIG_CRYPTO_CTS=m
|
||||
CONFIG_CRYPTO_LRW=m
|
||||
CONFIG_CRYPTO_OFB=m
|
||||
CONFIG_CRYPTO_PCBC=m
|
||||
CONFIG_CRYPTO_XTS=m
|
||||
CONFIG_CRYPTO_KEYWRAP=m
|
||||
CONFIG_CRYPTO_ADIANTUM=m
|
||||
CONFIG_CRYPTO_XCBC=m
|
||||
@ -622,6 +618,7 @@ CONFIG_TEST_OVERFLOW=m
|
||||
CONFIG_TEST_RHASHTABLE=m
|
||||
CONFIG_TEST_HASH=m
|
||||
CONFIG_TEST_IDA=m
|
||||
CONFIG_TEST_VMALLOC=m
|
||||
CONFIG_TEST_USER_COPY=m
|
||||
CONFIG_TEST_BPF=m
|
||||
CONFIG_FIND_BIT_BENCHMARK=m
|
||||
@ -631,4 +628,5 @@ CONFIG_TEST_UDELAY=m
|
||||
CONFIG_TEST_STATIC_KEYS=m
|
||||
CONFIG_TEST_KMOD=m
|
||||
CONFIG_TEST_MEMCAT_P=m
|
||||
CONFIG_TEST_STACKINIT=m
|
||||
CONFIG_EARLY_PRINTK=y
|
||||
|
@ -49,6 +49,7 @@ CONFIG_TLS=m
|
||||
CONFIG_XFRM_MIGRATE=y
|
||||
CONFIG_NET_KEY=y
|
||||
CONFIG_XDP_SOCKETS=y
|
||||
CONFIG_XDP_SOCKETS_DIAG=m
|
||||
CONFIG_INET=y
|
||||
CONFIG_IP_PNP=y
|
||||
CONFIG_IP_PNP_DHCP=y
|
||||
@ -203,9 +204,6 @@ CONFIG_NFT_FIB_IPV4=m
|
||||
CONFIG_NF_TABLES_ARP=y
|
||||
CONFIG_NF_FLOW_TABLE_IPV4=m
|
||||
CONFIG_NF_LOG_ARP=m
|
||||
CONFIG_NFT_CHAIN_NAT_IPV4=m
|
||||
CONFIG_NFT_MASQ_IPV4=m
|
||||
CONFIG_NFT_REDIR_IPV4=m
|
||||
CONFIG_IP_NF_IPTABLES=m
|
||||
CONFIG_IP_NF_MATCH_AH=m
|
||||
CONFIG_IP_NF_MATCH_ECN=m
|
||||
@ -227,9 +225,6 @@ CONFIG_IP_NF_ARPTABLES=m
|
||||
CONFIG_IP_NF_ARPFILTER=m
|
||||
CONFIG_IP_NF_ARP_MANGLE=m
|
||||
CONFIG_NFT_CHAIN_ROUTE_IPV6=m
|
||||
CONFIG_NFT_CHAIN_NAT_IPV6=m
|
||||
CONFIG_NFT_MASQ_IPV6=m
|
||||
CONFIG_NFT_REDIR_IPV6=m
|
||||
CONFIG_NFT_DUP_IPV6=m
|
||||
CONFIG_NFT_FIB_IPV6=m
|
||||
CONFIG_NF_FLOW_TABLE_IPV6=m
|
||||
@ -306,7 +301,6 @@ CONFIG_AF_KCM=m
|
||||
# CONFIG_WIRELESS is not set
|
||||
CONFIG_PSAMPLE=m
|
||||
CONFIG_NET_IFE=m
|
||||
CONFIG_NET_DEVLINK=m
|
||||
# CONFIG_UEVENT_HELPER is not set
|
||||
CONFIG_DEVTMPFS=y
|
||||
CONFIG_DEVTMPFS_MOUNT=y
|
||||
@ -413,12 +407,12 @@ CONFIG_RTC_DRV_GENERIC=m
|
||||
# CONFIG_VIRTIO_MENU is not set
|
||||
# CONFIG_IOMMU_SUPPORT is not set
|
||||
CONFIG_DAX=m
|
||||
# CONFIG_VALIDATE_FS_PARSER is not set
|
||||
CONFIG_EXT4_FS=y
|
||||
CONFIG_REISERFS_FS=m
|
||||
CONFIG_JFS_FS=m
|
||||
CONFIG_OCFS2_FS=m
|
||||
# CONFIG_OCFS2_DEBUG_MASKLOG is not set
|
||||
CONFIG_FS_ENCRYPTION=m
|
||||
CONFIG_FANOTIFY=y
|
||||
CONFIG_QUOTA_NETLINK_INTERFACE=y
|
||||
# CONFIG_PRINT_QUOTA_WARNING is not set
|
||||
@ -526,9 +520,11 @@ CONFIG_CRYPTO_AEGIS256=m
|
||||
CONFIG_CRYPTO_MORUS640=m
|
||||
CONFIG_CRYPTO_MORUS1280=m
|
||||
CONFIG_CRYPTO_CFB=m
|
||||
CONFIG_CRYPTO_CTS=m
|
||||
CONFIG_CRYPTO_LRW=m
|
||||
CONFIG_CRYPTO_OFB=m
|
||||
CONFIG_CRYPTO_PCBC=m
|
||||
CONFIG_CRYPTO_XTS=m
|
||||
CONFIG_CRYPTO_KEYWRAP=m
|
||||
CONFIG_CRYPTO_ADIANTUM=m
|
||||
CONFIG_CRYPTO_XCBC=m
|
||||
@ -593,6 +589,7 @@ CONFIG_TEST_OVERFLOW=m
|
||||
CONFIG_TEST_RHASHTABLE=m
|
||||
CONFIG_TEST_HASH=m
|
||||
CONFIG_TEST_IDA=m
|
||||
CONFIG_TEST_VMALLOC=m
|
||||
CONFIG_TEST_USER_COPY=m
|
||||
CONFIG_TEST_BPF=m
|
||||
CONFIG_FIND_BIT_BENCHMARK=m
|
||||
@ -602,4 +599,5 @@ CONFIG_TEST_UDELAY=m
|
||||
CONFIG_TEST_STATIC_KEYS=m
|
||||
CONFIG_TEST_KMOD=m
|
||||
CONFIG_TEST_MEMCAT_P=m
|
||||
CONFIG_TEST_STACKINIT=m
|
||||
CONFIG_EARLY_PRINTK=y
|
||||
|
@ -51,6 +51,7 @@ CONFIG_TLS=m
|
||||
CONFIG_XFRM_MIGRATE=y
|
||||
CONFIG_NET_KEY=y
|
||||
CONFIG_XDP_SOCKETS=y
|
||||
CONFIG_XDP_SOCKETS_DIAG=m
|
||||
CONFIG_INET=y
|
||||
CONFIG_IP_PNP=y
|
||||
CONFIG_IP_PNP_DHCP=y
|
||||
@ -205,9 +206,6 @@ CONFIG_NFT_FIB_IPV4=m
|
||||
CONFIG_NF_TABLES_ARP=y
|
||||
CONFIG_NF_FLOW_TABLE_IPV4=m
|
||||
CONFIG_NF_LOG_ARP=m
|
||||
CONFIG_NFT_CHAIN_NAT_IPV4=m
|
||||
CONFIG_NFT_MASQ_IPV4=m
|
||||
CONFIG_NFT_REDIR_IPV4=m
|
||||
CONFIG_IP_NF_IPTABLES=m
|
||||
CONFIG_IP_NF_MATCH_AH=m
|
||||
CONFIG_IP_NF_MATCH_ECN=m
|
||||
@ -229,9 +227,6 @@ CONFIG_IP_NF_ARPTABLES=m
|
||||
CONFIG_IP_NF_ARPFILTER=m
|
||||
CONFIG_IP_NF_ARP_MANGLE=m
|
||||
CONFIG_NFT_CHAIN_ROUTE_IPV6=m
|
||||
CONFIG_NFT_CHAIN_NAT_IPV6=m
|
||||
CONFIG_NFT_MASQ_IPV6=m
|
||||
CONFIG_NFT_REDIR_IPV6=m
|
||||
CONFIG_NFT_DUP_IPV6=m
|
||||
CONFIG_NFT_FIB_IPV6=m
|
||||
CONFIG_NF_FLOW_TABLE_IPV6=m
|
||||
@ -308,7 +303,6 @@ CONFIG_AF_KCM=m
|
||||
# CONFIG_WIRELESS is not set
|
||||
CONFIG_PSAMPLE=m
|
||||
CONFIG_NET_IFE=m
|
||||
CONFIG_NET_DEVLINK=m
|
||||
# CONFIG_UEVENT_HELPER is not set
|
||||
CONFIG_DEVTMPFS=y
|
||||
CONFIG_DEVTMPFS_MOUNT=y
|
||||
@ -422,12 +416,12 @@ CONFIG_RTC_DRV_GENERIC=m
|
||||
# CONFIG_VIRTIO_MENU is not set
|
||||
# CONFIG_IOMMU_SUPPORT is not set
|
||||
CONFIG_DAX=m
|
||||
# CONFIG_VALIDATE_FS_PARSER is not set
|
||||
CONFIG_EXT4_FS=y
|
||||
CONFIG_REISERFS_FS=m
|
||||
CONFIG_JFS_FS=m
|
||||
CONFIG_OCFS2_FS=m
|
||||
# CONFIG_OCFS2_DEBUG_MASKLOG is not set
|
||||
CONFIG_FS_ENCRYPTION=m
|
||||
CONFIG_FANOTIFY=y
|
||||
CONFIG_QUOTA_NETLINK_INTERFACE=y
|
||||
# CONFIG_PRINT_QUOTA_WARNING is not set
|
||||
@ -535,9 +529,11 @@ CONFIG_CRYPTO_AEGIS256=m
|
||||
CONFIG_CRYPTO_MORUS640=m
|
||||
CONFIG_CRYPTO_MORUS1280=m
|
||||
CONFIG_CRYPTO_CFB=m
|
||||
CONFIG_CRYPTO_CTS=m
|
||||
CONFIG_CRYPTO_LRW=m
|
||||
CONFIG_CRYPTO_OFB=m
|
||||
CONFIG_CRYPTO_PCBC=m
|
||||
CONFIG_CRYPTO_XTS=m
|
||||
CONFIG_CRYPTO_KEYWRAP=m
|
||||
CONFIG_CRYPTO_ADIANTUM=m
|
||||
CONFIG_CRYPTO_XCBC=m
|
||||
@ -602,6 +598,7 @@ CONFIG_TEST_OVERFLOW=m
|
||||
CONFIG_TEST_RHASHTABLE=m
|
||||
CONFIG_TEST_HASH=m
|
||||
CONFIG_TEST_IDA=m
|
||||
CONFIG_TEST_VMALLOC=m
|
||||
CONFIG_TEST_USER_COPY=m
|
||||
CONFIG_TEST_BPF=m
|
||||
CONFIG_FIND_BIT_BENCHMARK=m
|
||||
@ -611,4 +608,5 @@ CONFIG_TEST_UDELAY=m
|
||||
CONFIG_TEST_STATIC_KEYS=m
|
||||
CONFIG_TEST_KMOD=m
|
||||
CONFIG_TEST_MEMCAT_P=m
|
||||
CONFIG_TEST_STACKINIT=m
|
||||
CONFIG_EARLY_PRINTK=y
|
||||
|
@ -50,6 +50,7 @@ CONFIG_TLS=m
|
||||
CONFIG_XFRM_MIGRATE=y
|
||||
CONFIG_NET_KEY=y
|
||||
CONFIG_XDP_SOCKETS=y
|
||||
CONFIG_XDP_SOCKETS_DIAG=m
|
||||
CONFIG_INET=y
|
||||
CONFIG_IP_PNP=y
|
||||
CONFIG_IP_PNP_DHCP=y
|
||||
@ -204,9 +205,6 @@ CONFIG_NFT_FIB_IPV4=m
|
||||
CONFIG_NF_TABLES_ARP=y
|
||||
CONFIG_NF_FLOW_TABLE_IPV4=m
|
||||
CONFIG_NF_LOG_ARP=m
|
||||
CONFIG_NFT_CHAIN_NAT_IPV4=m
|
||||
CONFIG_NFT_MASQ_IPV4=m
|
||||
CONFIG_NFT_REDIR_IPV4=m
|
||||
CONFIG_IP_NF_IPTABLES=m
|
||||
CONFIG_IP_NF_MATCH_AH=m
|
||||
CONFIG_IP_NF_MATCH_ECN=m
|
||||
@ -228,9 +226,6 @@ CONFIG_IP_NF_ARPTABLES=m
|
||||
CONFIG_IP_NF_ARPFILTER=m
|
||||
CONFIG_IP_NF_ARP_MANGLE=m
|
||||
CONFIG_NFT_CHAIN_ROUTE_IPV6=m
|
||||
CONFIG_NFT_CHAIN_NAT_IPV6=m
|
||||
CONFIG_NFT_MASQ_IPV6=m
|
||||
CONFIG_NFT_REDIR_IPV6=m
|
||||
CONFIG_NFT_DUP_IPV6=m
|
||||
CONFIG_NFT_FIB_IPV6=m
|
||||
CONFIG_NF_FLOW_TABLE_IPV6=m
|
||||
@ -310,7 +305,6 @@ CONFIG_AF_KCM=m
|
||||
# CONFIG_WIRELESS is not set
|
||||
CONFIG_PSAMPLE=m
|
||||
CONFIG_NET_IFE=m
|
||||
CONFIG_NET_DEVLINK=m
|
||||
# CONFIG_UEVENT_HELPER is not set
|
||||
CONFIG_DEVTMPFS=y
|
||||
CONFIG_DEVTMPFS_MOUNT=y
|
||||
@ -444,12 +438,12 @@ CONFIG_RTC_DRV_GENERIC=m
|
||||
# CONFIG_VIRTIO_MENU is not set
|
||||
# CONFIG_IOMMU_SUPPORT is not set
|
||||
CONFIG_DAX=m
|
||||
# CONFIG_VALIDATE_FS_PARSER is not set
|
||||
CONFIG_EXT4_FS=y
|
||||
CONFIG_REISERFS_FS=m
|
||||
CONFIG_JFS_FS=m
|
||||
CONFIG_OCFS2_FS=m
|
||||
# CONFIG_OCFS2_DEBUG_MASKLOG is not set
|
||||
CONFIG_FS_ENCRYPTION=m
|
||||
CONFIG_FANOTIFY=y
|
||||
CONFIG_QUOTA_NETLINK_INTERFACE=y
|
||||
# CONFIG_PRINT_QUOTA_WARNING is not set
|
||||
@ -557,9 +551,11 @@ CONFIG_CRYPTO_AEGIS256=m
|
||||
CONFIG_CRYPTO_MORUS640=m
|
||||
CONFIG_CRYPTO_MORUS1280=m
|
||||
CONFIG_CRYPTO_CFB=m
|
||||
CONFIG_CRYPTO_CTS=m
|
||||
CONFIG_CRYPTO_LRW=m
|
||||
CONFIG_CRYPTO_OFB=m
|
||||
CONFIG_CRYPTO_PCBC=m
|
||||
CONFIG_CRYPTO_XTS=m
|
||||
CONFIG_CRYPTO_KEYWRAP=m
|
||||
CONFIG_CRYPTO_ADIANTUM=m
|
||||
CONFIG_CRYPTO_XCBC=m
|
||||
@ -624,6 +620,7 @@ CONFIG_TEST_OVERFLOW=m
|
||||
CONFIG_TEST_RHASHTABLE=m
|
||||
CONFIG_TEST_HASH=m
|
||||
CONFIG_TEST_IDA=m
|
||||
CONFIG_TEST_VMALLOC=m
|
||||
CONFIG_TEST_USER_COPY=m
|
||||
CONFIG_TEST_BPF=m
|
||||
CONFIG_FIND_BIT_BENCHMARK=m
|
||||
@ -633,4 +630,5 @@ CONFIG_TEST_UDELAY=m
|
||||
CONFIG_TEST_STATIC_KEYS=m
|
||||
CONFIG_TEST_KMOD=m
|
||||
CONFIG_TEST_MEMCAT_P=m
|
||||
CONFIG_TEST_STACKINIT=m
|
||||
CONFIG_EARLY_PRINTK=y
|
||||
|
@ -70,6 +70,7 @@ CONFIG_TLS=m
|
||||
CONFIG_XFRM_MIGRATE=y
|
||||
CONFIG_NET_KEY=y
|
||||
CONFIG_XDP_SOCKETS=y
|
||||
CONFIG_XDP_SOCKETS_DIAG=m
|
||||
CONFIG_INET=y
|
||||
CONFIG_IP_PNP=y
|
||||
CONFIG_IP_PNP_DHCP=y
|
||||
@ -224,9 +225,6 @@ CONFIG_NFT_FIB_IPV4=m
|
||||
CONFIG_NF_TABLES_ARP=y
|
||||
CONFIG_NF_FLOW_TABLE_IPV4=m
|
||||
CONFIG_NF_LOG_ARP=m
|
||||
CONFIG_NFT_CHAIN_NAT_IPV4=m
|
||||
CONFIG_NFT_MASQ_IPV4=m
|
||||
CONFIG_NFT_REDIR_IPV4=m
|
||||
CONFIG_IP_NF_IPTABLES=m
|
||||
CONFIG_IP_NF_MATCH_AH=m
|
||||
CONFIG_IP_NF_MATCH_ECN=m
|
||||
@ -248,9 +246,6 @@ CONFIG_IP_NF_ARPTABLES=m
|
||||
CONFIG_IP_NF_ARPFILTER=m
|
||||
CONFIG_IP_NF_ARP_MANGLE=m
|
||||
CONFIG_NFT_CHAIN_ROUTE_IPV6=m
|
||||
CONFIG_NFT_CHAIN_NAT_IPV6=m
|
||||
CONFIG_NFT_MASQ_IPV6=m
|
||||
CONFIG_NFT_REDIR_IPV6=m
|
||||
CONFIG_NFT_DUP_IPV6=m
|
||||
CONFIG_NFT_FIB_IPV6=m
|
||||
CONFIG_NF_FLOW_TABLE_IPV6=m
|
||||
@ -330,7 +325,6 @@ CONFIG_AF_KCM=m
|
||||
# CONFIG_WIRELESS is not set
|
||||
CONFIG_PSAMPLE=m
|
||||
CONFIG_NET_IFE=m
|
||||
CONFIG_NET_DEVLINK=m
|
||||
# CONFIG_UEVENT_HELPER is not set
|
||||
CONFIG_DEVTMPFS=y
|
||||
CONFIG_DEVTMPFS_MOUNT=y
|
||||
@ -526,12 +520,12 @@ CONFIG_RTC_DRV_GENERIC=m
|
||||
# CONFIG_VIRTIO_MENU is not set
|
||||
# CONFIG_IOMMU_SUPPORT is not set
|
||||
CONFIG_DAX=m
|
||||
# CONFIG_VALIDATE_FS_PARSER is not set
|
||||
CONFIG_EXT4_FS=y
|
||||
CONFIG_REISERFS_FS=m
|
||||
CONFIG_JFS_FS=m
|
||||
CONFIG_OCFS2_FS=m
|
||||
# CONFIG_OCFS2_DEBUG_MASKLOG is not set
|
||||
CONFIG_FS_ENCRYPTION=m
|
||||
CONFIG_FANOTIFY=y
|
||||
CONFIG_QUOTA_NETLINK_INTERFACE=y
|
||||
# CONFIG_PRINT_QUOTA_WARNING is not set
|
||||
@ -639,9 +633,11 @@ CONFIG_CRYPTO_AEGIS256=m
|
||||
CONFIG_CRYPTO_MORUS640=m
|
||||
CONFIG_CRYPTO_MORUS1280=m
|
||||
CONFIG_CRYPTO_CFB=m
|
||||
CONFIG_CRYPTO_CTS=m
|
||||
CONFIG_CRYPTO_LRW=m
|
||||
CONFIG_CRYPTO_OFB=m
|
||||
CONFIG_CRYPTO_PCBC=m
|
||||
CONFIG_CRYPTO_XTS=m
|
||||
CONFIG_CRYPTO_KEYWRAP=m
|
||||
CONFIG_CRYPTO_ADIANTUM=m
|
||||
CONFIG_CRYPTO_XCBC=m
|
||||
@ -706,6 +702,7 @@ CONFIG_TEST_OVERFLOW=m
|
||||
CONFIG_TEST_RHASHTABLE=m
|
||||
CONFIG_TEST_HASH=m
|
||||
CONFIG_TEST_IDA=m
|
||||
CONFIG_TEST_VMALLOC=m
|
||||
CONFIG_TEST_USER_COPY=m
|
||||
CONFIG_TEST_BPF=m
|
||||
CONFIG_FIND_BIT_BENCHMARK=m
|
||||
@ -715,4 +712,5 @@ CONFIG_TEST_UDELAY=m
|
||||
CONFIG_TEST_STATIC_KEYS=m
|
||||
CONFIG_TEST_KMOD=m
|
||||
CONFIG_TEST_MEMCAT_P=m
|
||||
CONFIG_TEST_STACKINIT=m
|
||||
CONFIG_EARLY_PRINTK=y
|
||||
|
@ -48,6 +48,7 @@ CONFIG_TLS=m
|
||||
CONFIG_XFRM_MIGRATE=y
|
||||
CONFIG_NET_KEY=y
|
||||
CONFIG_XDP_SOCKETS=y
|
||||
CONFIG_XDP_SOCKETS_DIAG=m
|
||||
CONFIG_INET=y
|
||||
CONFIG_IP_PNP=y
|
||||
CONFIG_IP_PNP_DHCP=y
|
||||
@ -202,9 +203,6 @@ CONFIG_NFT_FIB_IPV4=m
|
||||
CONFIG_NF_TABLES_ARP=y
|
||||
CONFIG_NF_FLOW_TABLE_IPV4=m
|
||||
CONFIG_NF_LOG_ARP=m
|
||||
CONFIG_NFT_CHAIN_NAT_IPV4=m
|
||||
CONFIG_NFT_MASQ_IPV4=m
|
||||
CONFIG_NFT_REDIR_IPV4=m
|
||||
CONFIG_IP_NF_IPTABLES=m
|
||||
CONFIG_IP_NF_MATCH_AH=m
|
||||
CONFIG_IP_NF_MATCH_ECN=m
|
||||
@ -226,9 +224,6 @@ CONFIG_IP_NF_ARPTABLES=m
|
||||
CONFIG_IP_NF_ARPFILTER=m
|
||||
CONFIG_IP_NF_ARP_MANGLE=m
|
||||
CONFIG_NFT_CHAIN_ROUTE_IPV6=m
|
||||
CONFIG_NFT_CHAIN_NAT_IPV6=m
|
||||
CONFIG_NFT_MASQ_IPV6=m
|
||||
CONFIG_NFT_REDIR_IPV6=m
|
||||
CONFIG_NFT_DUP_IPV6=m
|
||||
CONFIG_NFT_FIB_IPV6=m
|
||||
CONFIG_NF_FLOW_TABLE_IPV6=m
|
||||
@ -305,7 +300,6 @@ CONFIG_AF_KCM=m
|
||||
# CONFIG_WIRELESS is not set
|
||||
CONFIG_PSAMPLE=m
|
||||
CONFIG_NET_IFE=m
|
||||
CONFIG_NET_DEVLINK=m
|
||||
# CONFIG_UEVENT_HELPER is not set
|
||||
CONFIG_DEVTMPFS=y
|
||||
CONFIG_DEVTMPFS_MOUNT=y
|
||||
@ -412,12 +406,12 @@ CONFIG_RTC_DRV_GENERIC=m
|
||||
# CONFIG_VIRTIO_MENU is not set
|
||||
# CONFIG_IOMMU_SUPPORT is not set
|
||||
CONFIG_DAX=m
|
||||
# CONFIG_VALIDATE_FS_PARSER is not set
|
||||
CONFIG_EXT4_FS=y
|
||||
CONFIG_REISERFS_FS=m
|
||||
CONFIG_JFS_FS=m
|
||||
CONFIG_OCFS2_FS=m
|
||||
# CONFIG_OCFS2_DEBUG_MASKLOG is not set
|
||||
CONFIG_FS_ENCRYPTION=m
|
||||
CONFIG_FANOTIFY=y
|
||||
CONFIG_QUOTA_NETLINK_INTERFACE=y
|
||||
# CONFIG_PRINT_QUOTA_WARNING is not set
|
||||
@ -525,9 +519,11 @@ CONFIG_CRYPTO_AEGIS256=m
|
||||
CONFIG_CRYPTO_MORUS640=m
|
||||
CONFIG_CRYPTO_MORUS1280=m
|
||||
CONFIG_CRYPTO_CFB=m
|
||||
CONFIG_CRYPTO_CTS=m
|
||||
CONFIG_CRYPTO_LRW=m
|
||||
CONFIG_CRYPTO_OFB=m
|
||||
CONFIG_CRYPTO_PCBC=m
|
||||
CONFIG_CRYPTO_XTS=m
|
||||
CONFIG_CRYPTO_KEYWRAP=m
|
||||
CONFIG_CRYPTO_ADIANTUM=m
|
||||
CONFIG_CRYPTO_XCBC=m
|
||||
@ -592,6 +588,7 @@ CONFIG_TEST_OVERFLOW=m
|
||||
CONFIG_TEST_RHASHTABLE=m
|
||||
CONFIG_TEST_HASH=m
|
||||
CONFIG_TEST_IDA=m
|
||||
CONFIG_TEST_VMALLOC=m
|
||||
CONFIG_TEST_USER_COPY=m
|
||||
CONFIG_TEST_BPF=m
|
||||
CONFIG_FIND_BIT_BENCHMARK=m
|
||||
@ -601,4 +598,5 @@ CONFIG_TEST_UDELAY=m
|
||||
CONFIG_TEST_STATIC_KEYS=m
|
||||
CONFIG_TEST_KMOD=m
|
||||
CONFIG_TEST_MEMCAT_P=m
|
||||
CONFIG_TEST_STACKINIT=m
|
||||
CONFIG_EARLY_PRINTK=y
|
||||
|
@ -49,6 +49,7 @@ CONFIG_TLS=m
|
||||
CONFIG_XFRM_MIGRATE=y
|
||||
CONFIG_NET_KEY=y
|
||||
CONFIG_XDP_SOCKETS=y
|
||||
CONFIG_XDP_SOCKETS_DIAG=m
|
||||
CONFIG_INET=y
|
||||
CONFIG_IP_PNP=y
|
||||
CONFIG_IP_PNP_DHCP=y
|
||||
@ -203,9 +204,6 @@ CONFIG_NFT_FIB_IPV4=m
|
||||
CONFIG_NF_TABLES_ARP=y
|
||||
CONFIG_NF_FLOW_TABLE_IPV4=m
|
||||
CONFIG_NF_LOG_ARP=m
|
||||
CONFIG_NFT_CHAIN_NAT_IPV4=m
|
||||
CONFIG_NFT_MASQ_IPV4=m
|
||||
CONFIG_NFT_REDIR_IPV4=m
|
||||
CONFIG_IP_NF_IPTABLES=m
|
||||
CONFIG_IP_NF_MATCH_AH=m
|
||||
CONFIG_IP_NF_MATCH_ECN=m
|
||||
@ -227,9 +225,6 @@ CONFIG_IP_NF_ARPTABLES=m
|
||||
CONFIG_IP_NF_ARPFILTER=m
|
||||
CONFIG_IP_NF_ARP_MANGLE=m
|
||||
CONFIG_NFT_CHAIN_ROUTE_IPV6=m
|
||||
CONFIG_NFT_CHAIN_NAT_IPV6=m
|
||||
CONFIG_NFT_MASQ_IPV6=m
|
||||
CONFIG_NFT_REDIR_IPV6=m
|
||||
CONFIG_NFT_DUP_IPV6=m
|
||||
CONFIG_NFT_FIB_IPV6=m
|
||||
CONFIG_NF_FLOW_TABLE_IPV6=m
|
||||
@ -306,7 +301,6 @@ CONFIG_AF_KCM=m
|
||||
# CONFIG_WIRELESS is not set
|
||||
CONFIG_PSAMPLE=m
|
||||
CONFIG_NET_IFE=m
|
||||
CONFIG_NET_DEVLINK=m
|
||||
# CONFIG_UEVENT_HELPER is not set
|
||||
CONFIG_DEVTMPFS=y
|
||||
CONFIG_DEVTMPFS_MOUNT=y
|
||||
@ -413,12 +407,12 @@ CONFIG_RTC_DRV_GENERIC=m
|
||||
# CONFIG_VIRTIO_MENU is not set
|
||||
# CONFIG_IOMMU_SUPPORT is not set
|
||||
CONFIG_DAX=m
|
||||
# CONFIG_VALIDATE_FS_PARSER is not set
|
||||
CONFIG_EXT4_FS=y
|
||||
CONFIG_REISERFS_FS=m
|
||||
CONFIG_JFS_FS=m
|
||||
CONFIG_OCFS2_FS=m
|
||||
# CONFIG_OCFS2_DEBUG_MASKLOG is not set
|
||||
CONFIG_FS_ENCRYPTION=m
|
||||
CONFIG_FANOTIFY=y
|
||||
CONFIG_QUOTA_NETLINK_INTERFACE=y
|
||||
# CONFIG_PRINT_QUOTA_WARNING is not set
|
||||
@ -526,9 +520,11 @@ CONFIG_CRYPTO_AEGIS256=m
|
||||
CONFIG_CRYPTO_MORUS640=m
|
||||
CONFIG_CRYPTO_MORUS1280=m
|
||||
CONFIG_CRYPTO_CFB=m
|
||||
CONFIG_CRYPTO_CTS=m
|
||||
CONFIG_CRYPTO_LRW=m
|
||||
CONFIG_CRYPTO_OFB=m
|
||||
CONFIG_CRYPTO_PCBC=m
|
||||
CONFIG_CRYPTO_XTS=m
|
||||
CONFIG_CRYPTO_KEYWRAP=m
|
||||
CONFIG_CRYPTO_ADIANTUM=m
|
||||
CONFIG_CRYPTO_XCBC=m
|
||||
@ -593,6 +589,7 @@ CONFIG_TEST_OVERFLOW=m
|
||||
CONFIG_TEST_RHASHTABLE=m
|
||||
CONFIG_TEST_HASH=m
|
||||
CONFIG_TEST_IDA=m
|
||||
CONFIG_TEST_VMALLOC=m
|
||||
CONFIG_TEST_USER_COPY=m
|
||||
CONFIG_TEST_BPF=m
|
||||
CONFIG_FIND_BIT_BENCHMARK=m
|
||||
@ -602,4 +599,5 @@ CONFIG_TEST_UDELAY=m
|
||||
CONFIG_TEST_STATIC_KEYS=m
|
||||
CONFIG_TEST_KMOD=m
|
||||
CONFIG_TEST_MEMCAT_P=m
|
||||
CONFIG_TEST_STACKINIT=m
|
||||
CONFIG_EARLY_PRINTK=y
|
||||
|
@ -50,6 +50,7 @@ CONFIG_TLS=m
|
||||
CONFIG_XFRM_MIGRATE=y
|
||||
CONFIG_NET_KEY=y
|
||||
CONFIG_XDP_SOCKETS=y
|
||||
CONFIG_XDP_SOCKETS_DIAG=m
|
||||
CONFIG_INET=y
|
||||
CONFIG_IP_PNP=y
|
||||
CONFIG_IP_PNP_DHCP=y
|
||||
@ -204,9 +205,6 @@ CONFIG_NFT_FIB_IPV4=m
|
||||
CONFIG_NF_TABLES_ARP=y
|
||||
CONFIG_NF_FLOW_TABLE_IPV4=m
|
||||
CONFIG_NF_LOG_ARP=m
|
||||
CONFIG_NFT_CHAIN_NAT_IPV4=m
|
||||
CONFIG_NFT_MASQ_IPV4=m
|
||||
CONFIG_NFT_REDIR_IPV4=m
|
||||
CONFIG_IP_NF_IPTABLES=m
|
||||
CONFIG_IP_NF_MATCH_AH=m
|
||||
CONFIG_IP_NF_MATCH_ECN=m
|
||||
@ -228,9 +226,6 @@ CONFIG_IP_NF_ARPTABLES=m
|
||||
CONFIG_IP_NF_ARPFILTER=m
|
||||
CONFIG_IP_NF_ARP_MANGLE=m
|
||||
CONFIG_NFT_CHAIN_ROUTE_IPV6=m
|
||||
CONFIG_NFT_CHAIN_NAT_IPV6=m
|
||||
CONFIG_NFT_MASQ_IPV6=m
|
||||
CONFIG_NFT_REDIR_IPV6=m
|
||||
CONFIG_NFT_DUP_IPV6=m
|
||||
CONFIG_NFT_FIB_IPV6=m
|
||||
CONFIG_NF_FLOW_TABLE_IPV6=m
|
||||
@ -307,7 +302,6 @@ CONFIG_AF_KCM=m
|
||||
# CONFIG_WIRELESS is not set
|
||||
CONFIG_PSAMPLE=m
|
||||
CONFIG_NET_IFE=m
|
||||
CONFIG_NET_DEVLINK=m
|
||||
# CONFIG_UEVENT_HELPER is not set
|
||||
CONFIG_DEVTMPFS=y
|
||||
CONFIG_DEVTMPFS_MOUNT=y
|
||||
@ -431,12 +425,12 @@ CONFIG_RTC_DRV_GENERIC=m
|
||||
# CONFIG_VIRTIO_MENU is not set
|
||||
# CONFIG_IOMMU_SUPPORT is not set
|
||||
CONFIG_DAX=m
|
||||
# CONFIG_VALIDATE_FS_PARSER is not set
|
||||
CONFIG_EXT4_FS=y
|
||||
CONFIG_REISERFS_FS=m
|
||||
CONFIG_JFS_FS=m
|
||||
CONFIG_OCFS2_FS=m
|
||||
# CONFIG_OCFS2_DEBUG_MASKLOG is not set
|
||||
CONFIG_FS_ENCRYPTION=m
|
||||
CONFIG_FANOTIFY=y
|
||||
CONFIG_QUOTA_NETLINK_INTERFACE=y
|
||||
# CONFIG_PRINT_QUOTA_WARNING is not set
|
||||
@ -544,9 +538,11 @@ CONFIG_CRYPTO_AEGIS256=m
|
||||
CONFIG_CRYPTO_MORUS640=m
|
||||
CONFIG_CRYPTO_MORUS1280=m
|
||||
CONFIG_CRYPTO_CFB=m
|
||||
CONFIG_CRYPTO_CTS=m
|
||||
CONFIG_CRYPTO_LRW=m
|
||||
CONFIG_CRYPTO_OFB=m
|
||||
CONFIG_CRYPTO_PCBC=m
|
||||
CONFIG_CRYPTO_XTS=m
|
||||
CONFIG_CRYPTO_KEYWRAP=m
|
||||
CONFIG_CRYPTO_ADIANTUM=m
|
||||
CONFIG_CRYPTO_XCBC=m
|
||||
@ -611,6 +607,7 @@ CONFIG_TEST_OVERFLOW=m
|
||||
CONFIG_TEST_RHASHTABLE=m
|
||||
CONFIG_TEST_HASH=m
|
||||
CONFIG_TEST_IDA=m
|
||||
CONFIG_TEST_VMALLOC=m
|
||||
CONFIG_TEST_USER_COPY=m
|
||||
CONFIG_TEST_BPF=m
|
||||
CONFIG_FIND_BIT_BENCHMARK=m
|
||||
@ -620,4 +617,5 @@ CONFIG_TEST_UDELAY=m
|
||||
CONFIG_TEST_STATIC_KEYS=m
|
||||
CONFIG_TEST_KMOD=m
|
||||
CONFIG_TEST_MEMCAT_P=m
|
||||
CONFIG_TEST_STACKINIT=m
|
||||
CONFIG_EARLY_PRINTK=y
|
||||
|
@ -46,6 +46,7 @@ CONFIG_TLS=m
|
||||
CONFIG_XFRM_MIGRATE=y
|
||||
CONFIG_NET_KEY=y
|
||||
CONFIG_XDP_SOCKETS=y
|
||||
CONFIG_XDP_SOCKETS_DIAG=m
|
||||
CONFIG_INET=y
|
||||
CONFIG_IP_PNP=y
|
||||
CONFIG_IP_PNP_DHCP=y
|
||||
@ -200,9 +201,6 @@ CONFIG_NFT_FIB_IPV4=m
|
||||
CONFIG_NF_TABLES_ARP=y
|
||||
CONFIG_NF_FLOW_TABLE_IPV4=m
|
||||
CONFIG_NF_LOG_ARP=m
|
||||
CONFIG_NFT_CHAIN_NAT_IPV4=m
|
||||
CONFIG_NFT_MASQ_IPV4=m
|
||||
CONFIG_NFT_REDIR_IPV4=m
|
||||
CONFIG_IP_NF_IPTABLES=m
|
||||
CONFIG_IP_NF_MATCH_AH=m
|
||||
CONFIG_IP_NF_MATCH_ECN=m
|
||||
@ -224,9 +222,6 @@ CONFIG_IP_NF_ARPTABLES=m
|
||||
CONFIG_IP_NF_ARPFILTER=m
|
||||
CONFIG_IP_NF_ARP_MANGLE=m
|
||||
CONFIG_NFT_CHAIN_ROUTE_IPV6=m
|
||||
CONFIG_NFT_CHAIN_NAT_IPV6=m
|
||||
CONFIG_NFT_MASQ_IPV6=m
|
||||
CONFIG_NFT_REDIR_IPV6=m
|
||||
CONFIG_NFT_DUP_IPV6=m
|
||||
CONFIG_NFT_FIB_IPV6=m
|
||||
CONFIG_NF_FLOW_TABLE_IPV6=m
|
||||
@ -303,7 +298,6 @@ CONFIG_AF_KCM=m
|
||||
# CONFIG_WIRELESS is not set
|
||||
CONFIG_PSAMPLE=m
|
||||
CONFIG_NET_IFE=m
|
||||
CONFIG_NET_DEVLINK=m
|
||||
# CONFIG_UEVENT_HELPER is not set
|
||||
CONFIG_DEVTMPFS=y
|
||||
CONFIG_DEVTMPFS_MOUNT=y
|
||||
@ -415,12 +409,12 @@ CONFIG_RTC_DRV_GENERIC=m
|
||||
# CONFIG_VIRTIO_MENU is not set
|
||||
# CONFIG_IOMMU_SUPPORT is not set
|
||||
CONFIG_DAX=m
|
||||
# CONFIG_VALIDATE_FS_PARSER is not set
|
||||
CONFIG_EXT4_FS=y
|
||||
CONFIG_REISERFS_FS=m
|
||||
CONFIG_JFS_FS=m
|
||||
CONFIG_OCFS2_FS=m
|
||||
# CONFIG_OCFS2_DEBUG_MASKLOG is not set
|
||||
CONFIG_FS_ENCRYPTION=m
|
||||
CONFIG_FANOTIFY=y
|
||||
CONFIG_QUOTA_NETLINK_INTERFACE=y
|
||||
# CONFIG_PRINT_QUOTA_WARNING is not set
|
||||
@ -528,9 +522,11 @@ CONFIG_CRYPTO_AEGIS256=m
|
||||
CONFIG_CRYPTO_MORUS640=m
|
||||
CONFIG_CRYPTO_MORUS1280=m
|
||||
CONFIG_CRYPTO_CFB=m
|
||||
CONFIG_CRYPTO_CTS=m
|
||||
CONFIG_CRYPTO_LRW=m
|
||||
CONFIG_CRYPTO_OFB=m
|
||||
CONFIG_CRYPTO_PCBC=m
|
||||
CONFIG_CRYPTO_XTS=m
|
||||
CONFIG_CRYPTO_KEYWRAP=m
|
||||
CONFIG_CRYPTO_ADIANTUM=m
|
||||
CONFIG_CRYPTO_XCBC=m
|
||||
@ -595,6 +591,7 @@ CONFIG_TEST_OVERFLOW=m
|
||||
CONFIG_TEST_RHASHTABLE=m
|
||||
CONFIG_TEST_HASH=m
|
||||
CONFIG_TEST_IDA=m
|
||||
CONFIG_TEST_VMALLOC=m
|
||||
CONFIG_TEST_USER_COPY=m
|
||||
CONFIG_TEST_BPF=m
|
||||
CONFIG_FIND_BIT_BENCHMARK=m
|
||||
@ -604,3 +601,4 @@ CONFIG_TEST_UDELAY=m
|
||||
CONFIG_TEST_STATIC_KEYS=m
|
||||
CONFIG_TEST_KMOD=m
|
||||
CONFIG_TEST_MEMCAT_P=m
|
||||
CONFIG_TEST_STACKINIT=m
|
||||
|
@ -46,6 +46,7 @@ CONFIG_TLS=m
|
||||
CONFIG_XFRM_MIGRATE=y
|
||||
CONFIG_NET_KEY=y
|
||||
CONFIG_XDP_SOCKETS=y
|
||||
CONFIG_XDP_SOCKETS_DIAG=m
|
||||
CONFIG_INET=y
|
||||
CONFIG_IP_PNP=y
|
||||
CONFIG_IP_PNP_DHCP=y
|
||||
@ -200,9 +201,6 @@ CONFIG_NFT_FIB_IPV4=m
|
||||
CONFIG_NF_TABLES_ARP=y
|
||||
CONFIG_NF_FLOW_TABLE_IPV4=m
|
||||
CONFIG_NF_LOG_ARP=m
|
||||
CONFIG_NFT_CHAIN_NAT_IPV4=m
|
||||
CONFIG_NFT_MASQ_IPV4=m
|
||||
CONFIG_NFT_REDIR_IPV4=m
|
||||
CONFIG_IP_NF_IPTABLES=m
|
||||
CONFIG_IP_NF_MATCH_AH=m
|
||||
CONFIG_IP_NF_MATCH_ECN=m
|
||||
@ -224,9 +222,6 @@ CONFIG_IP_NF_ARPTABLES=m
|
||||
CONFIG_IP_NF_ARPFILTER=m
|
||||
CONFIG_IP_NF_ARP_MANGLE=m
|
||||
CONFIG_NFT_CHAIN_ROUTE_IPV6=m
|
||||
CONFIG_NFT_CHAIN_NAT_IPV6=m
|
||||
CONFIG_NFT_MASQ_IPV6=m
|
||||
CONFIG_NFT_REDIR_IPV6=m
|
||||
CONFIG_NFT_DUP_IPV6=m
|
||||
CONFIG_NFT_FIB_IPV6=m
|
||||
CONFIG_NF_FLOW_TABLE_IPV6=m
|
||||
@ -303,7 +298,6 @@ CONFIG_AF_KCM=m
|
||||
# CONFIG_WIRELESS is not set
|
||||
CONFIG_PSAMPLE=m
|
||||
CONFIG_NET_IFE=m
|
||||
CONFIG_NET_DEVLINK=m
|
||||
# CONFIG_UEVENT_HELPER is not set
|
||||
CONFIG_DEVTMPFS=y
|
||||
CONFIG_DEVTMPFS_MOUNT=y
|
||||
@ -414,12 +408,12 @@ CONFIG_RTC_DRV_GENERIC=m
|
||||
# CONFIG_VIRTIO_MENU is not set
|
||||
# CONFIG_IOMMU_SUPPORT is not set
|
||||
CONFIG_DAX=m
|
||||
# CONFIG_VALIDATE_FS_PARSER is not set
|
||||
CONFIG_EXT4_FS=y
|
||||
CONFIG_REISERFS_FS=m
|
||||
CONFIG_JFS_FS=m
|
||||
CONFIG_OCFS2_FS=m
|
||||
# CONFIG_OCFS2_DEBUG_MASKLOG is not set
|
||||
CONFIG_FS_ENCRYPTION=m
|
||||
CONFIG_FANOTIFY=y
|
||||
CONFIG_QUOTA_NETLINK_INTERFACE=y
|
||||
# CONFIG_PRINT_QUOTA_WARNING is not set
|
||||
@ -527,9 +521,11 @@ CONFIG_CRYPTO_AEGIS256=m
|
||||
CONFIG_CRYPTO_MORUS640=m
|
||||
CONFIG_CRYPTO_MORUS1280=m
|
||||
CONFIG_CRYPTO_CFB=m
|
||||
CONFIG_CRYPTO_CTS=m
|
||||
CONFIG_CRYPTO_LRW=m
|
||||
CONFIG_CRYPTO_OFB=m
|
||||
CONFIG_CRYPTO_PCBC=m
|
||||
CONFIG_CRYPTO_XTS=m
|
||||
CONFIG_CRYPTO_KEYWRAP=m
|
||||
CONFIG_CRYPTO_ADIANTUM=m
|
||||
CONFIG_CRYPTO_XCBC=m
|
||||
@ -594,6 +590,7 @@ CONFIG_TEST_OVERFLOW=m
|
||||
CONFIG_TEST_RHASHTABLE=m
|
||||
CONFIG_TEST_HASH=m
|
||||
CONFIG_TEST_IDA=m
|
||||
CONFIG_TEST_VMALLOC=m
|
||||
CONFIG_TEST_USER_COPY=m
|
||||
CONFIG_TEST_BPF=m
|
||||
CONFIG_FIND_BIT_BENCHMARK=m
|
||||
@ -603,4 +600,5 @@ CONFIG_TEST_UDELAY=m
|
||||
CONFIG_TEST_STATIC_KEYS=m
|
||||
CONFIG_TEST_KMOD=m
|
||||
CONFIG_TEST_MEMCAT_P=m
|
||||
CONFIG_TEST_STACKINIT=m
|
||||
CONFIG_EARLY_PRINTK=y
|
||||
|
@ -254,7 +254,6 @@ void __init config_hp300(void)
|
||||
mach_sched_init = hp300_sched_init;
|
||||
mach_init_IRQ = hp300_init_IRQ;
|
||||
mach_get_model = hp300_get_model;
|
||||
arch_gettimeoffset = hp300_gettimeoffset;
|
||||
mach_hwclk = hp300_hwclk;
|
||||
mach_get_ss = hp300_get_ss;
|
||||
mach_reset = hp300_reset;
|
||||
|
@ -8,6 +8,7 @@
|
||||
*/
|
||||
|
||||
#include <asm/ptrace.h>
|
||||
#include <linux/clocksource.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/sched.h>
|
||||
@ -19,6 +20,18 @@
|
||||
#include <asm/traps.h>
|
||||
#include <asm/blinken.h>
|
||||
|
||||
static u64 hp300_read_clk(struct clocksource *cs);
|
||||
|
||||
static struct clocksource hp300_clk = {
|
||||
.name = "timer",
|
||||
.rating = 250,
|
||||
.read = hp300_read_clk,
|
||||
.mask = CLOCKSOURCE_MASK(32),
|
||||
.flags = CLOCK_SOURCE_IS_CONTINUOUS,
|
||||
};
|
||||
|
||||
static u32 clk_total, clk_offset;
|
||||
|
||||
/* Clock hardware definitions */
|
||||
|
||||
#define CLOCKBASE 0xf05f8000
|
||||
@ -28,39 +41,61 @@
|
||||
#define CLKCR3 CLKCR1
|
||||
#define CLKSR CLKCR2
|
||||
#define CLKMSB1 0x5
|
||||
#define CLKLSB1 0x7
|
||||
#define CLKMSB2 0x9
|
||||
#define CLKMSB3 0xD
|
||||
|
||||
/* This is for machines which generate the exact clock. */
|
||||
#define USECS_PER_JIFFY (1000000/HZ)
|
||||
#define CLKSR_INT1 BIT(0)
|
||||
|
||||
#define INTVAL ((10000 / 4) - 1)
|
||||
/* This is for machines which generate the exact clock. */
|
||||
|
||||
#define HP300_TIMER_CLOCK_FREQ 250000
|
||||
#define HP300_TIMER_CYCLES (HP300_TIMER_CLOCK_FREQ / HZ)
|
||||
#define INTVAL (HP300_TIMER_CYCLES - 1)
|
||||
|
||||
static irqreturn_t hp300_tick(int irq, void *dev_id)
|
||||
{
|
||||
irq_handler_t timer_routine = dev_id;
|
||||
unsigned long flags;
|
||||
unsigned long tmp;
|
||||
irq_handler_t vector = dev_id;
|
||||
|
||||
local_irq_save(flags);
|
||||
in_8(CLOCKBASE + CLKSR);
|
||||
asm volatile ("movpw %1@(5),%0" : "=d" (tmp) : "a" (CLOCKBASE));
|
||||
clk_total += INTVAL;
|
||||
clk_offset = 0;
|
||||
timer_routine(0, NULL);
|
||||
local_irq_restore(flags);
|
||||
|
||||
/* Turn off the network and SCSI leds */
|
||||
blinken_leds(0, 0xe0);
|
||||
return vector(irq, NULL);
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
u32 hp300_gettimeoffset(void)
|
||||
static u64 hp300_read_clk(struct clocksource *cs)
|
||||
{
|
||||
/* Read current timer 1 value */
|
||||
unsigned char lsb, msb1, msb2;
|
||||
unsigned short ticks;
|
||||
unsigned long flags;
|
||||
unsigned char lsb, msb, msb_new;
|
||||
u32 ticks;
|
||||
|
||||
msb1 = in_8(CLOCKBASE + 5);
|
||||
lsb = in_8(CLOCKBASE + 7);
|
||||
msb2 = in_8(CLOCKBASE + 5);
|
||||
if (msb1 != msb2)
|
||||
/* A carry happened while we were reading. Read it again */
|
||||
lsb = in_8(CLOCKBASE + 7);
|
||||
ticks = INTVAL - ((msb2 << 8) | lsb);
|
||||
return ((USECS_PER_JIFFY * ticks) / INTVAL) * 1000;
|
||||
local_irq_save(flags);
|
||||
/* Read current timer 1 value */
|
||||
msb = in_8(CLOCKBASE + CLKMSB1);
|
||||
again:
|
||||
if ((in_8(CLOCKBASE + CLKSR) & CLKSR_INT1) && msb > 0)
|
||||
clk_offset = INTVAL;
|
||||
lsb = in_8(CLOCKBASE + CLKLSB1);
|
||||
msb_new = in_8(CLOCKBASE + CLKMSB1);
|
||||
if (msb_new != msb) {
|
||||
msb = msb_new;
|
||||
goto again;
|
||||
}
|
||||
|
||||
ticks = INTVAL - ((msb << 8) | lsb);
|
||||
ticks += clk_offset + clk_total;
|
||||
local_irq_restore(flags);
|
||||
|
||||
return ticks;
|
||||
}
|
||||
|
||||
void __init hp300_sched_init(irq_handler_t vector)
|
||||
@ -70,9 +105,11 @@ void __init hp300_sched_init(irq_handler_t vector)
|
||||
|
||||
asm volatile(" movpw %0,%1@(5)" : : "d" (INTVAL), "a" (CLOCKBASE));
|
||||
|
||||
if (request_irq(IRQ_AUTO_6, hp300_tick, 0, "timer tick", vector))
|
||||
if (request_irq(IRQ_AUTO_6, hp300_tick, IRQF_TIMER, "timer tick", vector))
|
||||
pr_err("Couldn't register timer interrupt\n");
|
||||
|
||||
out_8(CLOCKBASE + CLKCR2, 0x1); /* select CR1 */
|
||||
out_8(CLOCKBASE + CLKCR1, 0x40); /* enable irq */
|
||||
|
||||
clocksource_register_hz(&hp300_clk, HP300_TIMER_CLOCK_FREQ);
|
||||
}
|
||||
|
@ -1,2 +1 @@
|
||||
extern void hp300_sched_init(irq_handler_t vector);
|
||||
extern u32 hp300_gettimeoffset(void);
|
||||
|
@ -66,7 +66,7 @@ struct pcc_regs {
|
||||
#define PCC_INT_ENAB 0x08
|
||||
|
||||
#define PCC_TIMER_INT_CLR 0x80
|
||||
#define PCC_TIMER_PRELOAD 63936l
|
||||
#define PCC_TIMER_CLR_OVF 0x04
|
||||
|
||||
#define PCC_LEVEL_ABORT 0x07
|
||||
#define PCC_LEVEL_SERIAL 0x04
|
||||
|
@ -54,8 +54,6 @@ struct mac_booter_data mac_bi_data;
|
||||
/* The phys. video addr. - might be bogus on some machines */
|
||||
static unsigned long mac_orig_videoaddr;
|
||||
|
||||
/* Mac specific timer functions */
|
||||
extern u32 mac_gettimeoffset(void);
|
||||
extern int mac_hwclk(int, struct rtc_time *);
|
||||
extern void iop_preinit(void);
|
||||
extern void iop_init(void);
|
||||
@ -155,7 +153,6 @@ void __init config_mac(void)
|
||||
mach_sched_init = mac_sched_init;
|
||||
mach_init_IRQ = mac_init_IRQ;
|
||||
mach_get_model = mac_get_model;
|
||||
arch_gettimeoffset = mac_gettimeoffset;
|
||||
mach_hwclk = mac_hwclk;
|
||||
mach_reset = mac_reset;
|
||||
mach_halt = mac_poweroff;
|
||||
|
@ -23,6 +23,7 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#include <linux/clocksource.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/mm.h>
|
||||
@ -54,16 +55,6 @@ static __u8 rbv_clear;
|
||||
|
||||
static int gIER,gIFR,gBufA,gBufB;
|
||||
|
||||
/*
|
||||
* Timer defs.
|
||||
*/
|
||||
|
||||
#define TICK_SIZE 10000
|
||||
#define MAC_CLOCK_TICK (783300/HZ) /* ticks per HZ */
|
||||
#define MAC_CLOCK_LOW (MAC_CLOCK_TICK&0xFF)
|
||||
#define MAC_CLOCK_HIGH (MAC_CLOCK_TICK>>8)
|
||||
|
||||
|
||||
/*
|
||||
* On Macs with a genuine VIA chip there is no way to mask an individual slot
|
||||
* interrupt. This limitation also seems to apply to VIA clone logic cores in
|
||||
@ -271,22 +262,6 @@ void __init via_init(void)
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Start the 100 Hz clock
|
||||
*/
|
||||
|
||||
void __init via_init_clock(irq_handler_t func)
|
||||
{
|
||||
via1[vACR] |= 0x40;
|
||||
via1[vT1LL] = MAC_CLOCK_LOW;
|
||||
via1[vT1LH] = MAC_CLOCK_HIGH;
|
||||
via1[vT1CL] = MAC_CLOCK_LOW;
|
||||
via1[vT1CH] = MAC_CLOCK_HIGH;
|
||||
|
||||
if (request_irq(IRQ_MAC_TIMER_1, func, 0, "timer", func))
|
||||
pr_err("Couldn't register %s interrupt\n", "timer");
|
||||
}
|
||||
|
||||
/*
|
||||
* Debugging dump, used in various places to see what's going on.
|
||||
*/
|
||||
@ -314,29 +289,6 @@ void via_debug_dump(void)
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* This is always executed with interrupts disabled.
|
||||
*
|
||||
* TBI: get time offset between scheduling timer ticks
|
||||
*/
|
||||
|
||||
u32 mac_gettimeoffset(void)
|
||||
{
|
||||
unsigned long ticks, offset = 0;
|
||||
|
||||
/* read VIA1 timer 2 current value */
|
||||
ticks = via1[vT1CL] | (via1[vT1CH] << 8);
|
||||
/* The probability of underflow is less than 2% */
|
||||
if (ticks > MAC_CLOCK_TICK - MAC_CLOCK_TICK / 50)
|
||||
/* Check for pending timer interrupt in VIA1 IFR */
|
||||
if (via1[vIFR] & 0x40) offset = TICK_SIZE;
|
||||
|
||||
ticks = MAC_CLOCK_TICK - ticks;
|
||||
ticks = ticks * 10000L / MAC_CLOCK_TICK;
|
||||
|
||||
return (ticks + offset) * 1000;
|
||||
}
|
||||
|
||||
/*
|
||||
* Flush the L2 cache on Macs that have it by flipping
|
||||
* the system into 24-bit mode for an instant.
|
||||
@ -440,6 +392,8 @@ void via_nubus_irq_shutdown(int irq)
|
||||
* via6522.c :-), disable/pending masks added.
|
||||
*/
|
||||
|
||||
#define VIA_TIMER_1_INT BIT(6)
|
||||
|
||||
void via1_irq(struct irq_desc *desc)
|
||||
{
|
||||
int irq_num;
|
||||
@ -449,6 +403,21 @@ void via1_irq(struct irq_desc *desc)
|
||||
if (!events)
|
||||
return;
|
||||
|
||||
irq_num = IRQ_MAC_TIMER_1;
|
||||
irq_bit = VIA_TIMER_1_INT;
|
||||
if (events & irq_bit) {
|
||||
unsigned long flags;
|
||||
|
||||
local_irq_save(flags);
|
||||
via1[vIFR] = irq_bit;
|
||||
generic_handle_irq(irq_num);
|
||||
local_irq_restore(flags);
|
||||
|
||||
events &= ~irq_bit;
|
||||
if (!events)
|
||||
return;
|
||||
}
|
||||
|
||||
irq_num = VIA1_SOURCE_BASE;
|
||||
irq_bit = 1;
|
||||
do {
|
||||
@ -605,3 +574,82 @@ int via2_scsi_drq_pending(void)
|
||||
return via2[gIFR] & (1 << IRQ_IDX(IRQ_MAC_SCSIDRQ));
|
||||
}
|
||||
EXPORT_SYMBOL(via2_scsi_drq_pending);
|
||||
|
||||
/* timer and clock source */
|
||||
|
||||
#define VIA_CLOCK_FREQ 783360 /* VIA "phase 2" clock in Hz */
|
||||
#define VIA_TIMER_CYCLES (VIA_CLOCK_FREQ / HZ) /* clock cycles per jiffy */
|
||||
|
||||
#define VIA_TC (VIA_TIMER_CYCLES - 2) /* including 0 and -1 */
|
||||
#define VIA_TC_LOW (VIA_TC & 0xFF)
|
||||
#define VIA_TC_HIGH (VIA_TC >> 8)
|
||||
|
||||
static u64 mac_read_clk(struct clocksource *cs);
|
||||
|
||||
static struct clocksource mac_clk = {
|
||||
.name = "via1",
|
||||
.rating = 250,
|
||||
.read = mac_read_clk,
|
||||
.mask = CLOCKSOURCE_MASK(32),
|
||||
.flags = CLOCK_SOURCE_IS_CONTINUOUS,
|
||||
};
|
||||
|
||||
static u32 clk_total, clk_offset;
|
||||
|
||||
static irqreturn_t via_timer_handler(int irq, void *dev_id)
|
||||
{
|
||||
irq_handler_t timer_routine = dev_id;
|
||||
|
||||
clk_total += VIA_TIMER_CYCLES;
|
||||
clk_offset = 0;
|
||||
timer_routine(0, NULL);
|
||||
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
void __init via_init_clock(irq_handler_t timer_routine)
|
||||
{
|
||||
if (request_irq(IRQ_MAC_TIMER_1, via_timer_handler, IRQF_TIMER, "timer",
|
||||
timer_routine)) {
|
||||
pr_err("Couldn't register %s interrupt\n", "timer");
|
||||
return;
|
||||
}
|
||||
|
||||
via1[vT1LL] = VIA_TC_LOW;
|
||||
via1[vT1LH] = VIA_TC_HIGH;
|
||||
via1[vT1CL] = VIA_TC_LOW;
|
||||
via1[vT1CH] = VIA_TC_HIGH;
|
||||
via1[vACR] |= 0x40;
|
||||
|
||||
clocksource_register_hz(&mac_clk, VIA_CLOCK_FREQ);
|
||||
}
|
||||
|
||||
static u64 mac_read_clk(struct clocksource *cs)
|
||||
{
|
||||
unsigned long flags;
|
||||
u8 count_high;
|
||||
u16 count;
|
||||
u32 ticks;
|
||||
|
||||
/*
|
||||
* Timer counter wrap-around is detected with the timer interrupt flag
|
||||
* but reading the counter low byte (vT1CL) would reset the flag.
|
||||
* Also, accessing both counter registers is essentially a data race.
|
||||
* These problems are avoided by ignoring the low byte. Clock accuracy
|
||||
* is 256 times worse (error can reach 0.327 ms) but CPU overhead is
|
||||
* reduced by avoiding slow VIA register accesses.
|
||||
*/
|
||||
|
||||
local_irq_save(flags);
|
||||
count_high = via1[vT1CH];
|
||||
if (count_high == 0xFF)
|
||||
count_high = 0;
|
||||
if (count_high > 0 && (via1[vIFR] & VIA_TIMER_1_INT))
|
||||
clk_offset = VIA_TIMER_CYCLES;
|
||||
count = count_high << 8;
|
||||
ticks = VIA_TIMER_CYCLES - count;
|
||||
ticks += clk_offset + clk_total;
|
||||
local_irq_restore(flags);
|
||||
|
||||
return ticks;
|
||||
}
|
||||
|
@ -17,6 +17,7 @@
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/mm.h>
|
||||
#include <linux/tty.h>
|
||||
#include <linux/clocksource.h>
|
||||
#include <linux/console.h>
|
||||
#include <linux/linkage.h>
|
||||
#include <linux/init.h>
|
||||
@ -38,18 +39,12 @@
|
||||
|
||||
static void mvme147_get_model(char *model);
|
||||
extern void mvme147_sched_init(irq_handler_t handler);
|
||||
extern u32 mvme147_gettimeoffset(void);
|
||||
extern int mvme147_hwclk (int, struct rtc_time *);
|
||||
extern void mvme147_reset (void);
|
||||
|
||||
|
||||
static int bcd2int (unsigned char b);
|
||||
|
||||
/* Save tick handler routine pointer, will point to xtime_update() in
|
||||
* kernel/time/timekeeping.c, called via mvme147_process_int() */
|
||||
|
||||
irq_handler_t tick_handler;
|
||||
|
||||
|
||||
int __init mvme147_parse_bootinfo(const struct bi_record *bi)
|
||||
{
|
||||
@ -89,7 +84,6 @@ void __init config_mvme147(void)
|
||||
mach_max_dma_address = 0x01000000;
|
||||
mach_sched_init = mvme147_sched_init;
|
||||
mach_init_IRQ = mvme147_init_IRQ;
|
||||
arch_gettimeoffset = mvme147_gettimeoffset;
|
||||
mach_hwclk = mvme147_hwclk;
|
||||
mach_reset = mvme147_reset;
|
||||
mach_get_model = mvme147_get_model;
|
||||
@ -99,45 +93,76 @@ void __init config_mvme147(void)
|
||||
vme_brdtype = VME_TYPE_MVME147;
|
||||
}
|
||||
|
||||
static u64 mvme147_read_clk(struct clocksource *cs);
|
||||
|
||||
static struct clocksource mvme147_clk = {
|
||||
.name = "pcc",
|
||||
.rating = 250,
|
||||
.read = mvme147_read_clk,
|
||||
.mask = CLOCKSOURCE_MASK(32),
|
||||
.flags = CLOCK_SOURCE_IS_CONTINUOUS,
|
||||
};
|
||||
|
||||
static u32 clk_total;
|
||||
|
||||
#define PCC_TIMER_CLOCK_FREQ 160000
|
||||
#define PCC_TIMER_CYCLES (PCC_TIMER_CLOCK_FREQ / HZ)
|
||||
#define PCC_TIMER_PRELOAD (0x10000 - PCC_TIMER_CYCLES)
|
||||
|
||||
/* Using pcc tick timer 1 */
|
||||
|
||||
static irqreturn_t mvme147_timer_int (int irq, void *dev_id)
|
||||
{
|
||||
irq_handler_t timer_routine = dev_id;
|
||||
unsigned long flags;
|
||||
|
||||
local_irq_save(flags);
|
||||
m147_pcc->t1_int_cntrl = PCC_TIMER_INT_CLR;
|
||||
m147_pcc->t1_int_cntrl = PCC_INT_ENAB|PCC_LEVEL_TIMER1;
|
||||
return tick_handler(irq, dev_id);
|
||||
m147_pcc->t1_cntrl = PCC_TIMER_CLR_OVF;
|
||||
clk_total += PCC_TIMER_CYCLES;
|
||||
timer_routine(0, NULL);
|
||||
local_irq_restore(flags);
|
||||
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
|
||||
void mvme147_sched_init (irq_handler_t timer_routine)
|
||||
{
|
||||
tick_handler = timer_routine;
|
||||
if (request_irq(PCC_IRQ_TIMER1, mvme147_timer_int, 0, "timer 1", NULL))
|
||||
if (request_irq(PCC_IRQ_TIMER1, mvme147_timer_int, IRQF_TIMER,
|
||||
"timer 1", timer_routine))
|
||||
pr_err("Couldn't register timer interrupt\n");
|
||||
|
||||
/* Init the clock with a value */
|
||||
/* our clock goes off every 6.25us */
|
||||
/* The clock counter increments until 0xFFFF then reloads */
|
||||
m147_pcc->t1_preload = PCC_TIMER_PRELOAD;
|
||||
m147_pcc->t1_cntrl = 0x0; /* clear timer */
|
||||
m147_pcc->t1_cntrl = 0x3; /* start timer */
|
||||
m147_pcc->t1_int_cntrl = PCC_TIMER_INT_CLR; /* clear pending ints */
|
||||
m147_pcc->t1_int_cntrl = PCC_INT_ENAB|PCC_LEVEL_TIMER1;
|
||||
|
||||
clocksource_register_hz(&mvme147_clk, PCC_TIMER_CLOCK_FREQ);
|
||||
}
|
||||
|
||||
/* This is always executed with interrupts disabled. */
|
||||
/* XXX There are race hazards in this code XXX */
|
||||
u32 mvme147_gettimeoffset(void)
|
||||
static u64 mvme147_read_clk(struct clocksource *cs)
|
||||
{
|
||||
volatile unsigned short *cp = (volatile unsigned short *)0xfffe1012;
|
||||
unsigned short n;
|
||||
unsigned long flags;
|
||||
u8 overflow, tmp;
|
||||
u16 count;
|
||||
u32 ticks;
|
||||
|
||||
n = *cp;
|
||||
while (n != *cp)
|
||||
n = *cp;
|
||||
local_irq_save(flags);
|
||||
tmp = m147_pcc->t1_cntrl >> 4;
|
||||
count = m147_pcc->t1_count;
|
||||
overflow = m147_pcc->t1_cntrl >> 4;
|
||||
if (overflow != tmp)
|
||||
count = m147_pcc->t1_count;
|
||||
count -= PCC_TIMER_PRELOAD;
|
||||
ticks = count + overflow * PCC_TIMER_CYCLES;
|
||||
ticks += clk_total;
|
||||
local_irq_restore(flags);
|
||||
|
||||
n -= PCC_TIMER_PRELOAD;
|
||||
return ((unsigned long)n * 25 / 4) * 1000;
|
||||
return ticks;
|
||||
}
|
||||
|
||||
static int bcd2int (unsigned char b)
|
||||
|
@ -19,6 +19,7 @@
|
||||
#include <linux/mm.h>
|
||||
#include <linux/seq_file.h>
|
||||
#include <linux/tty.h>
|
||||
#include <linux/clocksource.h>
|
||||
#include <linux/console.h>
|
||||
#include <linux/linkage.h>
|
||||
#include <linux/init.h>
|
||||
@ -44,17 +45,11 @@ static MK48T08ptr_t volatile rtc = (MK48T08ptr_t)MVME_RTC_BASE;
|
||||
|
||||
static void mvme16x_get_model(char *model);
|
||||
extern void mvme16x_sched_init(irq_handler_t handler);
|
||||
extern u32 mvme16x_gettimeoffset(void);
|
||||
extern int mvme16x_hwclk (int, struct rtc_time *);
|
||||
extern void mvme16x_reset (void);
|
||||
|
||||
int bcd2int (unsigned char b);
|
||||
|
||||
/* Save tick handler routine pointer, will point to xtime_update() in
|
||||
* kernel/time/timekeeping.c, called via mvme16x_process_int() */
|
||||
|
||||
static irq_handler_t tick_handler;
|
||||
|
||||
|
||||
unsigned short mvme16x_config;
|
||||
EXPORT_SYMBOL(mvme16x_config);
|
||||
@ -120,11 +115,11 @@ static void __init mvme16x_init_IRQ (void)
|
||||
m68k_setup_user_interrupt(VEC_USER, 192);
|
||||
}
|
||||
|
||||
#define pcc2chip ((volatile u_char *)0xfff42000)
|
||||
#define PccSCCMICR 0x1d
|
||||
#define PccSCCTICR 0x1e
|
||||
#define PccSCCRICR 0x1f
|
||||
#define PccTPIACKR 0x25
|
||||
#define PCC2CHIP (0xfff42000)
|
||||
#define PCCSCCMICR (PCC2CHIP + 0x1d)
|
||||
#define PCCSCCTICR (PCC2CHIP + 0x1e)
|
||||
#define PCCSCCRICR (PCC2CHIP + 0x1f)
|
||||
#define PCCTPIACKR (PCC2CHIP + 0x25)
|
||||
|
||||
#ifdef CONFIG_EARLY_PRINTK
|
||||
|
||||
@ -232,10 +227,10 @@ void mvme16x_cons_write(struct console *co, const char *str, unsigned count)
|
||||
base_addr[CyIER] = CyTxMpty;
|
||||
|
||||
while (1) {
|
||||
if (pcc2chip[PccSCCTICR] & 0x20)
|
||||
if (in_8(PCCSCCTICR) & 0x20)
|
||||
{
|
||||
/* We have a Tx int. Acknowledge it */
|
||||
sink = pcc2chip[PccTPIACKR];
|
||||
sink = in_8(PCCTPIACKR);
|
||||
if ((base_addr[CyLICR] >> 2) == port) {
|
||||
if (i == count) {
|
||||
/* Last char of string is now output */
|
||||
@ -277,7 +272,6 @@ void __init config_mvme16x(void)
|
||||
mach_max_dma_address = 0xffffffff;
|
||||
mach_sched_init = mvme16x_sched_init;
|
||||
mach_init_IRQ = mvme16x_init_IRQ;
|
||||
arch_gettimeoffset = mvme16x_gettimeoffset;
|
||||
mach_hwclk = mvme16x_hwclk;
|
||||
mach_reset = mvme16x_reset;
|
||||
mach_get_model = mvme16x_get_model;
|
||||
@ -350,10 +344,46 @@ static irqreturn_t mvme16x_abort_int (int irq, void *dev_id)
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
static u64 mvme16x_read_clk(struct clocksource *cs);
|
||||
|
||||
static struct clocksource mvme16x_clk = {
|
||||
.name = "pcc",
|
||||
.rating = 250,
|
||||
.read = mvme16x_read_clk,
|
||||
.mask = CLOCKSOURCE_MASK(32),
|
||||
.flags = CLOCK_SOURCE_IS_CONTINUOUS,
|
||||
};
|
||||
|
||||
static u32 clk_total;
|
||||
|
||||
#define PCC_TIMER_CLOCK_FREQ 1000000
|
||||
#define PCC_TIMER_CYCLES (PCC_TIMER_CLOCK_FREQ / HZ)
|
||||
|
||||
#define PCCTCMP1 (PCC2CHIP + 0x04)
|
||||
#define PCCTCNT1 (PCC2CHIP + 0x08)
|
||||
#define PCCTOVR1 (PCC2CHIP + 0x17)
|
||||
#define PCCTIC1 (PCC2CHIP + 0x1b)
|
||||
|
||||
#define PCCTOVR1_TIC_EN 0x01
|
||||
#define PCCTOVR1_COC_EN 0x02
|
||||
#define PCCTOVR1_OVR_CLR 0x04
|
||||
|
||||
#define PCCTIC1_INT_CLR 0x08
|
||||
#define PCCTIC1_INT_EN 0x10
|
||||
|
||||
static irqreturn_t mvme16x_timer_int (int irq, void *dev_id)
|
||||
{
|
||||
*(volatile unsigned char *)0xfff4201b |= 8;
|
||||
return tick_handler(irq, dev_id);
|
||||
irq_handler_t timer_routine = dev_id;
|
||||
unsigned long flags;
|
||||
|
||||
local_irq_save(flags);
|
||||
out_8(PCCTIC1, in_8(PCCTIC1) | PCCTIC1_INT_CLR);
|
||||
out_8(PCCTOVR1, PCCTOVR1_OVR_CLR);
|
||||
clk_total += PCC_TIMER_CYCLES;
|
||||
timer_routine(0, NULL);
|
||||
local_irq_restore(flags);
|
||||
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
void mvme16x_sched_init (irq_handler_t timer_routine)
|
||||
@ -361,16 +391,17 @@ void mvme16x_sched_init (irq_handler_t timer_routine)
|
||||
uint16_t brdno = be16_to_cpu(mvme_bdid.brdno);
|
||||
int irq;
|
||||
|
||||
tick_handler = timer_routine;
|
||||
/* Using PCCchip2 or MC2 chip tick timer 1 */
|
||||
*(volatile unsigned long *)0xfff42008 = 0;
|
||||
*(volatile unsigned long *)0xfff42004 = 10000; /* 10ms */
|
||||
*(volatile unsigned char *)0xfff42017 |= 3;
|
||||
*(volatile unsigned char *)0xfff4201b = 0x16;
|
||||
if (request_irq(MVME16x_IRQ_TIMER, mvme16x_timer_int, 0,
|
||||
"timer", mvme16x_timer_int))
|
||||
out_be32(PCCTCNT1, 0);
|
||||
out_be32(PCCTCMP1, PCC_TIMER_CYCLES);
|
||||
out_8(PCCTOVR1, in_8(PCCTOVR1) | PCCTOVR1_TIC_EN | PCCTOVR1_COC_EN);
|
||||
out_8(PCCTIC1, PCCTIC1_INT_EN | 6);
|
||||
if (request_irq(MVME16x_IRQ_TIMER, mvme16x_timer_int, IRQF_TIMER, "timer",
|
||||
timer_routine))
|
||||
panic ("Couldn't register timer int");
|
||||
|
||||
clocksource_register_hz(&mvme16x_clk, PCC_TIMER_CLOCK_FREQ);
|
||||
|
||||
if (brdno == 0x0162 || brdno == 0x172)
|
||||
irq = MVME162_IRQ_ABORT;
|
||||
else
|
||||
@ -380,11 +411,23 @@ void mvme16x_sched_init (irq_handler_t timer_routine)
|
||||
panic ("Couldn't register abort int");
|
||||
}
|
||||
|
||||
|
||||
/* This is always executed with interrupts disabled. */
|
||||
u32 mvme16x_gettimeoffset(void)
|
||||
static u64 mvme16x_read_clk(struct clocksource *cs)
|
||||
{
|
||||
return (*(volatile u32 *)0xfff42008) * 1000;
|
||||
unsigned long flags;
|
||||
u8 overflow, tmp;
|
||||
u32 ticks;
|
||||
|
||||
local_irq_save(flags);
|
||||
tmp = in_8(PCCTOVR1) >> 4;
|
||||
ticks = in_be32(PCCTCNT1);
|
||||
overflow = in_8(PCCTOVR1) >> 4;
|
||||
if (overflow != tmp)
|
||||
ticks = in_be32(PCCTCNT1);
|
||||
ticks += overflow * PCC_TIMER_CYCLES;
|
||||
ticks += clk_total;
|
||||
local_irq_restore(flags);
|
||||
|
||||
return ticks;
|
||||
}
|
||||
|
||||
int bcd2int (unsigned char b)
|
||||
|
@ -40,7 +40,6 @@ extern void q40_init_IRQ(void);
|
||||
static void q40_get_model(char *model);
|
||||
extern void q40_sched_init(irq_handler_t handler);
|
||||
|
||||
static u32 q40_gettimeoffset(void);
|
||||
static int q40_hwclk(int, struct rtc_time *);
|
||||
static unsigned int q40_get_ss(void);
|
||||
static int q40_get_rtc_pll(struct rtc_pll_info *pll);
|
||||
@ -169,7 +168,6 @@ void __init config_q40(void)
|
||||
mach_sched_init = q40_sched_init;
|
||||
|
||||
mach_init_IRQ = q40_init_IRQ;
|
||||
arch_gettimeoffset = q40_gettimeoffset;
|
||||
mach_hwclk = q40_hwclk;
|
||||
mach_get_ss = q40_get_ss;
|
||||
mach_get_rtc_pll = q40_get_rtc_pll;
|
||||
@ -201,13 +199,6 @@ int __init q40_parse_bootinfo(const struct bi_record *rec)
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
static u32 q40_gettimeoffset(void)
|
||||
{
|
||||
return 5000 * (ql_ticks != 0) * 1000;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Looks like op is non-zero for setting the clock, and zero for
|
||||
* reading the clock.
|
||||
|
@ -127,10 +127,10 @@ void q40_mksound(unsigned int hz, unsigned int ticks)
|
||||
sound_ticks = ticks << 1;
|
||||
}
|
||||
|
||||
static irq_handler_t q40_timer_routine;
|
||||
|
||||
static irqreturn_t q40_timer_int (int irq, void * dev)
|
||||
static irqreturn_t q40_timer_int(int irq, void *dev_id)
|
||||
{
|
||||
irq_handler_t timer_routine = dev_id;
|
||||
|
||||
ql_ticks = ql_ticks ? 0 : 1;
|
||||
if (sound_ticks) {
|
||||
unsigned char sval=(sound_ticks & 1) ? 128-SVOL : 128+SVOL;
|
||||
@ -139,8 +139,13 @@ static irqreturn_t q40_timer_int (int irq, void * dev)
|
||||
*DAC_RIGHT=sval;
|
||||
}
|
||||
|
||||
if (!ql_ticks)
|
||||
q40_timer_routine(irq, dev);
|
||||
if (!ql_ticks) {
|
||||
unsigned long flags;
|
||||
|
||||
local_irq_save(flags);
|
||||
timer_routine(0, NULL);
|
||||
local_irq_restore(flags);
|
||||
}
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
@ -148,11 +153,9 @@ void q40_sched_init (irq_handler_t timer_routine)
|
||||
{
|
||||
int timer_irq;
|
||||
|
||||
q40_timer_routine = timer_routine;
|
||||
timer_irq = Q40_IRQ_FRAME;
|
||||
|
||||
if (request_irq(timer_irq, q40_timer_int, 0,
|
||||
"timer", q40_timer_int))
|
||||
if (request_irq(timer_irq, q40_timer_int, 0, "timer", timer_routine))
|
||||
panic("Couldn't register timer int");
|
||||
|
||||
master_outb(-1, FRAME_CLEAR_REG);
|
||||
|
@ -37,7 +37,6 @@
|
||||
|
||||
char sun3_reserved_pmeg[SUN3_PMEGS_NUM];
|
||||
|
||||
extern u32 sun3_gettimeoffset(void);
|
||||
static void sun3_sched_init(irq_handler_t handler);
|
||||
extern void sun3_get_model (char* model);
|
||||
extern int sun3_hwclk(int set, struct rtc_time *t);
|
||||
@ -138,7 +137,6 @@ void __init config_sun3(void)
|
||||
mach_sched_init = sun3_sched_init;
|
||||
mach_init_IRQ = sun3_init_IRQ;
|
||||
mach_reset = sun3_reboot;
|
||||
arch_gettimeoffset = sun3_gettimeoffset;
|
||||
mach_get_model = sun3_get_model;
|
||||
mach_hwclk = sun3_hwclk;
|
||||
mach_halt = sun3_halt;
|
||||
|
@ -22,13 +22,6 @@
|
||||
#define STOP_VAL (INTERSIL_STOP | INTERSIL_INT_ENABLE | INTERSIL_24H_MODE)
|
||||
#define START_VAL (INTERSIL_RUN | INTERSIL_INT_ENABLE | INTERSIL_24H_MODE)
|
||||
|
||||
/* does this need to be implemented? */
|
||||
u32 sun3_gettimeoffset(void)
|
||||
{
|
||||
return 1000;
|
||||
}
|
||||
|
||||
|
||||
/* get/set hwclock */
|
||||
|
||||
int sun3_hwclk(int set, struct rtc_time *t)
|
||||
|
@ -61,8 +61,10 @@ static irqreturn_t sun3_int7(int irq, void *dev_id)
|
||||
|
||||
static irqreturn_t sun3_int5(int irq, void *dev_id)
|
||||
{
|
||||
unsigned long flags;
|
||||
unsigned int cnt;
|
||||
|
||||
local_irq_save(flags);
|
||||
#ifdef CONFIG_SUN3
|
||||
intersil_clear();
|
||||
#endif
|
||||
@ -76,6 +78,7 @@ static irqreturn_t sun3_int5(int irq, void *dev_id)
|
||||
cnt = kstat_irqs_cpu(irq, 0);
|
||||
if (!(cnt % 20))
|
||||
sun3_leds(led_pattern[cnt % 160 / 20]);
|
||||
local_irq_restore(flags);
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
|
@ -49,7 +49,6 @@ void __init config_sun3x(void)
|
||||
mach_sched_init = sun3x_sched_init;
|
||||
mach_init_IRQ = sun3_init_IRQ;
|
||||
|
||||
arch_gettimeoffset = sun3x_gettimeoffset;
|
||||
mach_reset = sun3x_reboot;
|
||||
|
||||
mach_hwclk = sun3x_hwclk;
|
||||
|
@ -73,22 +73,21 @@ int sun3x_hwclk(int set, struct rtc_time *t)
|
||||
|
||||
return 0;
|
||||
}
|
||||
/* Not much we can do here */
|
||||
u32 sun3x_gettimeoffset(void)
|
||||
{
|
||||
return 0L;
|
||||
}
|
||||
|
||||
#if 0
|
||||
static void sun3x_timer_tick(int irq, void *dev_id, struct pt_regs *regs)
|
||||
static irqreturn_t sun3x_timer_tick(int irq, void *dev_id)
|
||||
{
|
||||
void (*vector)(int, void *, struct pt_regs *) = dev_id;
|
||||
irq_handler_t timer_routine = dev_id;
|
||||
unsigned long flags;
|
||||
|
||||
/* Clear the pending interrupt - pulse the enable line low */
|
||||
disable_irq(5);
|
||||
enable_irq(5);
|
||||
local_irq_save(flags);
|
||||
/* Clear the pending interrupt - pulse the enable line low */
|
||||
disable_irq(5);
|
||||
enable_irq(5);
|
||||
timer_routine(0, NULL);
|
||||
local_irq_restore(flags);
|
||||
|
||||
vector(irq, NULL, regs);
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -3,7 +3,6 @@
|
||||
#define SUN3X_TIME_H
|
||||
|
||||
extern int sun3x_hwclk(int set, struct rtc_time *t);
|
||||
u32 sun3x_gettimeoffset(void);
|
||||
void sun3x_sched_init(irq_handler_t vector);
|
||||
|
||||
struct mostek_dt {
|
||||
|
Loading…
Reference in New Issue
Block a user